0

--Report Parameters の下にV_ORG_NAME、レポートが実行されている組織名が表示されています。の下のベンダー名の出力を取得しようとしていますV_VENDOR_NAMEIFこれが 2 番目のステートメントを追加する正しい方法かどうかはわかりません。私の問題はコードのこのセクションに該当すると思いますが、編集方法がわかりません:IF '&1' IS NOT NULL これは Oracle のエラー出力です:

flex-direction: column;

以下のこの部分は正しくないと思いますが、編集または追加する方法がわかりません。

 IF '&1' IS NOT NULL 
 THEN
  SELECT NAME
    INTO V_VENDOR_NAME
  FROM AP.AP_SUPPLIERS
  WHERE VENDOR_ID = '&1';
 END IF;

 :V_VENDOR_NAME := V_VENDOR_NAME;

 END;
 /

 COLUMN V_ORG_ID noprint new_value V_ORG_ID

COLUMN V_VENDOR_ID noprint new_value V_VENDOR_ID

COLUMN V_ORG_NAME noprint new_value V_ORG_NAME

COLUMN V_VENDOR_NAME noprint new_value V_VENDOR_NAME

SELECT :V_VENDOR_ID            V_VENDOR_ID , 
   :V_ORG_ID               V_ORG_ID    ,
   :V_ORG_NAME             V_ORG_NAME  ,
   :V_VENDOR_NAME          V_VENDOR_NAME
FROM SYS.DUAL;

SELECT DATA FROM (
-- Report Header
SELECT '1','INST Supplier Banking' DATA FROM DUAL
UNION ALL
-- Report Parameters
SELECT '2','Vendor: '||'&V_VENDOR_NAME'||' Org: '||'&V_ORG_NAME'
FROM DUAL
UNION ALL
-- Column Headers
select '3','"Vendor Name"|"Supplier Number"|"Site Name"|"Bank Name"|"Bank Number"|"Branch Name"|"Branch Number"|"Account Name"|"Account Number"|"Description"|"Start Date"|"End Date"|"Creation Date"|"Created By"|"Last Update"|"Last Updated By"|"Address Line 1"|"Job Title"|"Email Address"'
FROM DUAL
4

1 に答える 1

0

バインド変数と置換変数を混同しているようです。

バインド変数は、事前に定義する必要がある PLSQL のような変数であり、解析後に SQL ステートメントに「バインド」されます。置換変数は、解析前に SQL ステートメントに「置換」される文字列です。それらを引用するように注意してください。引用しないと、列名として解釈されます。

以下に、それらを組み合わせる方法の例を示します。

VAR v_bind_name VARCHAR2(30)

BEGIN
    :v_bind_name  := 'Brad';
END;
/

SELECT :v_bind_name FROM sys.DUAL;

COLUMN SUBST_NAME NOPRINT NEW_VALUE v_subst_name

SELECT 'Pitt' AS subst_name FROM DUAL;

SELECT :v_bind_name AS first_name, '&V_SUBST_NAME' AS last_name FROM sys.DUAL;

SELECT *
  FROM ( -- Report Header
        SELECT '1', 'INST Supplier Banking' data FROM DUAL
        UNION ALL
        -- Report Parameters
        SELECT '2', 'Vendor: ' || :v_bind_name || ' Org: ' || '&V_SUBST_NAME' FROM DUAL
        UNION ALL
        -- Column Headers
        SELECT '3', '"Vendor Name"|"Supplier Number"|"Site Name"|"Bank Name"|"Bank Number"|"Branch Name"' FROM DUAL);
于 2016-10-06T06:22:15.193 に答える