簡體   English   中英

具有create select和cursor的db2存儲過程

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM