如果您在SQL Developer中將腳本運行爲腳本而不是語句,則可以使用SQL * Plus中的語法來聲明各種類型的綁定變量。
可惜DATE
不是在SQL * Plus綁定變量或SQL Developer中支持的數據類型
Usage: VAR[IABLE] [ [ NUMBER | CHAR | CHAR (n [CHAR|BYTE]) |
VARCHAR2 (n [CHAR|BYTE]) | NCHAR | NCHAR (n) |
NVARCHAR2 (n) | CLOB | NCLOB | REFCURSOR |
BINARY_FLOAT | BINARY_DOUBLE ] ]
where n is a positive integer
下面的代碼運行在SQL Developer中的腳本:
var my_bind varchar2;
exec :my_bind := sysdate;
select :my_bind from dual;
exec select 'test' into :my_bind from dual;
select :my_bind from dual;
生成以下輸出:
PL/SQL procedure successfully completed.
:MY_BIND
----------------------------------------------------------------------------
16-JUL-2015 13:49:54
PL/SQL procedure successfully completed.
:MY_BIND
----------------------------------------------------------------------------
test
這對日期仍然沒有幫助,因爲您仍然會遇到需要使用to_date和to_char進行日期轉換的字符串。
你是什麼意思「查詢中的其他虛擬表」?你有幾個作爲腳本一起運行的查詢嗎?或者一個帶有內聯視圖或CTE的查詢? –
第一個,我一起運行的幾個查詢。所以我需要一個WITH,給了我兩個由該算法產生的變量,一個基於我的綁定變量,另一個是在最後一個結果後「遞歸地」創建的。然後,我需要像使用腳本中的綁定變量一樣使用這兩個結果。在邏輯比較中使用它們...... – user3046061
你可以使用替換變量,但是最終你會在日期和字符串之間轉換很多。爲什麼不在每個查詢中重複計算(例如Gordon的情況)? (你可以把整個事物放入一個替代變量中以避免重複,但這是不尋常的)。 current_date來自哪裏,它真的是一個日期 - 是用'variable'命令定義的,並且是從一個匿名塊填充的? –