Db2
DB2 for z/OS 中的命名參數標記
我有一個查詢,我將為其中一個參數使用兩次相同的值。此查詢將在 IBM Data Studio 下執行以查看結果。下面是一個範例查詢:
SELECT * FROM SYSADM.STATISTICAL_TABLE S WHERE S.END_RECORD_TIMESTAMP BETWEEN CONCAT(?, '-12.00.00.000000') AND CONCAT(?, '-22.00.00.000000');
在 Data Studio 或任何類似的圖形查詢建構環境中執行時,系統會提示我輸入兩個參數的值,即使兩個參數的值始終相同。
我相信可以在其他 RDBMS 中使用命名參數標記來指示該值只應給出一次。例子:
SELECT * FROM SYSADM.STATISTICAL_TABLE S WHERE S.END_RECORD_TIMESTAMP BETWEEN CONCAT(?:queryDate, '-12.00.00.000000') AND CONCAT(?:queryDate, '-22.00.00.000000');
有沒有辦法在 DB2 for z/OS 中使用命名標記來指示值將是相同的,因此圖形工具只提示輸入一個輸入?對於有 20 多個輸入的查詢,這可能很耗時。
我應該這樣做有更好的方法嗎?
首先,命名參數標記的語法是
CONCAT(:queryDate, '-12.00.00.000000')
,也就是說,它以冒號開頭,而不是問號。參數標記的處理是在客戶端執行的,而不是在伺服器上執行的,這與您的伺服器是否是 DB2 for z/OS 無關。IBM Data Server Client(IBM 數據庫伺服器的通用驅動程序)支持命名參數標記。
Data Studio SQL 編輯器是否可以正確解析命名參數標記並將它們傳遞給驅動程序是另一個問題,我恐怕不知道答案。