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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章