[英]db2 stored procedure with create select and cursor
我正在嘗試定義一個DB2存儲過程,該過程(理想情況下)是CREATE VIEW,然后對該VIEW進行SELECT以構建另一段SQL,然后使用CURSOR執行該SQL並返回結果集。 我有2個問題:
DB2似乎不喜歡在單個SP中混合使用CREATE,SELECT和DECLARE CURSOR,
而且我無法弄清楚使用哪種語法基於SQL聲明游標,該SQL作為字符串存儲在已聲明的VARCHAR中,該VARCHAR是SELECT語句的輸出。
有沒有人做過類似的事情和/或能夠給我一些語法示例?
當然,您可以在DB2中做到這一點。 為了執行“創建視圖”,您需要使用動態SQL。 視圖上的選擇相同。 最后,為游標定義一個通用游標,然后動態執行它。
DECLARE SENTENCE VARCHAR(256);
DECLARE TABNAME VARCHAR(128);
DECLARE STMT STATEMENT;
DECLARE TABLES_CURSOR CURSOR
FOR TABLES_RS;
SET SENTENCE = 'CREATE VIEW TABS SELECT TABNAME FROM SYSCAT.TABLES';
PREPARE STMT FROM SENTENCE;
EXECUTE STMT;
SET SENTENCE = 'SELECT TABNAME FROM TABS';
PREPARE TABLES_RS FROM SENTENCE;
OPEN TABLES_CURSOR;
FETCH TABLES_CURSOR INTO TABNAME;
您可以在我的項目db2unit https://github.com/angoca/db2unit/blob/master/src/main/sql-pl/04-Body.sql中看到真正的SQL PL示例
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.