Oracle中函数的使用FUNCTION

问题:

会计科目维护:NC_ACCOUNT_SUBJECT

辅助核算维护:NC_ACCOUNT_AUXILIARY

会计科目和辅助核算两者的:关系表:NC_ACCOUNT_SUBJECT_AUXILIARY

一共有多个辅助,想在一行显示出来,哪些辅助是,哪些辅助不是;

比如:

解决方法:

运用函数来解决的,

创建函数:

CREATE OR REPLACE FUNCTION F_GET_SUBJECT_AUXILIARY (
  p_subject_id IN VARCHAR2,
  p_code IN VARCHAR2
  ) return VARCHAR2 IS Result VARCHAR2 ( 200 );
BEGIN
  SELECT
    DECODE(COUNT(1),0,'否','是') INTO Result
  FROM
    NC_ACCOUNT_AUXILIARY NAA
      LEFT JOIN
    NC_ACCOUNT_SUBJECT_AUXILIARY NASA ON NASA.AUXILIARY_ACCOUNT_ID = NAA.ID
    WHERE NASA.SUBJECT_ID = p_subject_id
    AND NAA.CODE = p_code;
 return Result ;
END F_GET_SUBJECT_AUXILIARY;
 

SQL语句调用函数来显示:

SELECT
            --NAS.* ,
      nas.apply_type as 单据类型,
      nas.org_id as 机构代码,
      nas.org_name as 机构名称,
      nas.code as 会计科目编码,
      nas.name as 会计科目名称,
      nas.cost_code as 费用编码,
      nas.cost_name as 费用名称,
      nas.detail_code as 明细费用编码,
      nas.detail_name as 明细费用名称,
      nas.company_id as 公司主键,

            DECODE(NAS.SUBJECT_DIRECTION,'00','借','10','贷',NAS.SUBJECT_DIRECTION) 科目方向,
      nas.subject_line_number as 科目行号,
      F_GET_SUBJECT_AUXILIARY(NAS.ID,'DEPT_ACCT') AS 部门辅助核算,
      F_GET_SUBJECT_AUXILIARY(NAS.ID,'STAF_ACCT') AS 人员辅助核算,
      F_GET_SUBJECT_AUXILIARY(NAS.ID,'BANK_ACCT') AS 银行帐户辅助核算,
      F_GET_SUBJECT_AUXILIARY(NAS.ID,'CASH_ACCT') AS 现金流量辅助核算,
      F_GET_SUBJECT_AUXILIARY(NAS.ID,'CUST_ACCT') AS 客商辅助核算,
      F_GET_SUBJECT_AUXILIARY(NAS.ID,'UNIT_ACCT') AS 单位分类辅助核算,
      nas.amount_type as 金额取值

            --F_GET_SUBJECT_AUXILIARY(NAS.ID,'XM_ACCT') AS XM_ACCT, 项目

        FROM
            NC_ACCOUNT_SUBJECT NAS
                LEFT JOIN
            SEC_ORGANIZATION SO ON NAS.ORG_ID = SO.ID
        WHERE
            1 =1

        ORDER BY NAS.ORG_ID,APPLY_TYPE_CODE

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值