試圖運行一些DB2查詢,但沒有得到任何結果。DB2 sql查詢運行
SELECT APPLICATION_ID,
CLIENT_WRKSTNNAME
FROM TABLE(MON_GET_CONNECTION(cast(NULL as bigint), -2)) AS t
WHERE APPLICATION_ID IN (SELECT ''''||APPLICATION_ID||''''
FROM SYSIBM.SYSDUMMY1)
問題出在WHERE子句中的子查詢中。如果我只運行
SELECT ''''||APPLICATION_ID||''''
FROM SYSIBM.SYSDUMMY1
部分並將結果複製/粘貼到大查詢 - 我會得到需要的結果。子查詢的結果如下所示:'92.81.111.13.51632.13022516453'
,它必須是String/varchar。
我在做什麼錯?
這是不同的APPLICATION_ID在這裏:'SELECT''''|| APPLICATION_ID ||''''FROM SYSIBM.SYSDUMMY1',而不是t.APPLICATION_ID。 SYSIBM.SYSDUMMY1(dummy表)中的APPLICATION_ID和select中的APPLICATION_ID來自t。 –
@udar_molota。 。 。我不知道您使用的是哪個版本的DB2,但在我知道的所有版本中,該表沒有名爲「APPLICATION_ID」的字段(請參閱http://pic.dhe.ibm.com/infocenter/dzichelp /v2r2/index.jsp?topic=%2Fcom.ibm.db2z10.doc.sqlref%2Fsrc%2Ftpc%2Fdb2z_sysibmsysdummy1table.htm)。因此,該查詢將解析來自外部作用域的字段,該作用域具有別名「t」。 –
你幾乎是正確的。 'MON_GET_CONNECTION'是一個表FUNCTION,SYSIBM.SYSDUMMY1是虛表。我使用9.7,我的問題的正確答案如下。 –