Db2

DB2 for z/OS 中的命名參數標記

  • July 8, 2015

我有一個查詢,我將為其中一個參數使用兩次相同的值。此查詢將在 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 或任何類似的圖形查詢建構環境中執行時,系統會提示我輸入兩個參數的值,即使兩個參數的值始終相同。

IBM 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 編輯器是否可以正確解析命名參數標記並將它們傳遞給驅動程序是另一個問題,我恐怕不知道答案。

引用自:https://dba.stackexchange.com/questions/106370