Db2

如何在過程中返回動態 SQL 值

  • December 21, 2021

我有一個接收參數的過程,並根據這些參數進行動態聲明。該語句始終返回一個數值。如何返回該值,或將其傳遞給變數?

例如以下:

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;

SELECT INTO 語句

PS。SELECT 必須只返回一行。如果不是,則限制返回的行數(具有一定的順序)。

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