2016-10-05 38 views
0

在--Report參數下,我有V_ORG_NAME顯示正在運行報告的組織名稱。我試圖在V_VENDOR_NAME下獲得供應商名稱的輸出。我不確定這是否是添加第二個IF聲明的正確方法。我相信,在我的這部分代碼我的問題下降,但我不知道如何編輯:IF '&1' IS NOT NULL 這是Oracle錯誤輸出:在具有聯合的select語句中無法獲得輸出。 Oracle SQL r12

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 
+0

這是一些工具或應用程序,您正在使用?我不知道'--Report parameters'是什麼,'flex-direction:column;'看起來不像一個錯誤消息。 –

+0

請張貼一些樣本數據和期望的結果。您可以查看[問]和[mcve]以改善您的問題 – Aleksej

+0

- 報告參數是已被註釋掉的文本。通常添加爲將來爲其他開發人員提供註釋。 – Anthony

回答

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);