Db2
如何在過程中返回動態 SQL 值
我有一個接收參數的過程,並根據這些參數進行動態聲明。該語句始終返回一個數值。如何返回該值,或將其傳遞給變數?
例如以下:
DECLARE VAR1_INPUT INT; DECLARE SQLSTRING VARCHAR(5000); DECLARE OUTPUTVAR INT; SET VAR1_INPUT = 5; SET SQLSTRING = 'select next value into :OUTPUTVAR for MYSCHEMA.MYSEQUENCE_'||CAST(VAR1_INPUT AS VARCHAR(25))||' from sysibm.sysdummy1'; EXECUTE IMMEDIATE SQLSTRING;
我想我可以使用游標,但這將執行很多並且需要輕量級,我寧願避免使用游標。並且不要專注於上面的無意義的動態 SQL,這只是一個範例。:)
編輯:原始問題從表中選擇一個值作為問題。答案與此相符,因此我將其標記為正確答案。後來我意識到序列的工作方式不同,所以我編輯了這個問題。這部分我一直想不通。
嘗試
DECLARE VAR1_INPUT INT; DECLARE SQLSTRING VARCHAR(5000); DECLARE OUTPUTVAR INT; SET VAR1_INPUT = 5; SET SQLSTRING = 'select MYCOL INTO :OUTPUTVAR FROM MYSCHEMA.MYTABLE where MYVAL = '||CAST(VAR1_INPUT AS VARCHAR(25)); EXECUTE IMMEDIATE SQLSTRING;
PS。SELECT 必須只返回一行。如果不是,則限制返回的行數(具有一定的順序)。