2016-08-02 56 views
-1

我試圖在ORACLE SQL Developer中的變量中定義標準值,但它一直要求我輸入一個值。我該如何避免這種情況,並將v_mode ='X1','X2'作爲默認值,並將COB_DATE設置爲7月14日,以便沒有彈出窗口?在Oracle SQL開發人員中定義變量

variable COB_DATE date 
variable v_mode varchar(20); 
exec :COB_DATE := '14-JUL-2016'; 
exec :v_mode := 'MAG'; 

select * 
    FROM DF_RISK_SIT2_OWNER.recon_ts_rs 
    WHERE SRC_HUB = 'DBRS' 
    AND TRD_SRC_SYS in :v_mode 
    AND DSET_COB_DT = :COB_DATE 

,但我得到的錯誤:綁定變量「COB_DATE」不宣

+0

你必須選擇:HTTP://計算器。 com/questions/5653423/how-do-i-use-variables-in-oracle-sql-developer –

+0

他們都不工作 – Nickpick

回答

2
SQL> help var 

VARIABLE 
-------- 

Declares a bind variable that can be referenced in PL/SQL, or 
lists the current display characteristics for a single variable 
or all variables. 

VAR[IABLE] [variable [type]] 

where type represents one of the following: 

    NUMBER   CHAR   CHAR (n [CHAR|BYTE]) 
    NCHAR   NCHAR (n)  VARCHAR2 (n [CHAR|BYTE]) 
    NVARCHAR2 (n) CLOB   NCLOB 
    REFCURSOR  BINARY_FLOAT BINARY_DOUBLE 

正如你可以看到這裏沒有DATE類型。我猜整個

variable COB_DATE date 

被忽略。

正如你可以定義COB_DATE爲VARCHAR2,並將其轉換爲DATE在SQL

variable COB_DATE varchar2(30) 
variable v_mode varchar2(20) 
exec :COB_DATE := '14-JUL-2016'; 
exec :v_mode := 'MAG'; 

select * 
    FROM DF_RISK_SIT2_OWNER.recon_ts_rs 
    WHERE SRC_HUB = 'DBRS' 
    AND TRD_SRC_SYS in :v_mode 
    AND DSET_COB_DT = TO_DATE(:COB_DATE, 'DD-MON-YYYY') 

或使用您的原始查詢依靠隱式轉換一個解決方法

+0

那麼我該如何定義一個日期? – Nickpick

+0

工程很棒。只剩下問題,我怎麼能把多個條目到v_mode? – Nickpick

+0

我建議創建一個新問題 –

1

您必須使用「運行腳本(F5)」而不是「運行語句(控制+回車」) - 我已經盤旋在紅色的工具欄圖標:

enter image description here

+0

仍然無法正常工作。匿名塊已完成 綁定變量「COB_DATE」未聲明。或者,如果我替換:用&&它說「SQL命令沒有正確結束」 – Nickpick

+0

@Marcin已經給出了正確的答案, –