0

在 --Report Parameters 下,我V_ORG_NAME显示了正在运行报告的组织名称。我正在尝试获取供应商名称下的输出V_VENDOR_NAME。我不确定这是否是添加第二条IF语句的正确方法。我相信我的问题属于我的代码的这一部分,但我不确定如何编辑: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

看来您混淆了 Bind 变量和 Substitution 变量。

Bind 变量是一个类似于 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 回答