2015-06-19 54 views
1

我想在DB2中创建存储过程的存储过程,如下图所示:在DB2中创建

CREATE PROCEDURE MIS.TEST_PROC1 (IN ID INT) 
DYNAMIC RESULT SETS 1 
P1: BEGIN 
-- Declare cursor 
DECLARE cursor1 CURSOR WITH RETURN FOR 
    SELECT REM 
    FROM MIS.BOOKING; 
    -- Cursor left open for client application 
    OPEN cursor1; 
    END P1; 

但是,如下图所示,它抛出错误,

ILLEGAL SYMBOL "<END-OF-STATEMENT>". SOME SYMBOLS THAT MIGHT BE LEGAL ARE:. SQLCODE=-104, SQLSTATE=42601, DRIVER=3.66.46 

在Data Studio,它启动显示来自“P1:BEGIN”行本身的错误。 这种方法已在IBM Data Studio中要创建4.1 任何人都可以请检查,如果我错过了这个

+0

这可能有助于了解平台/版本,但我90%确定你根本不需要'P1'(或冒号)。 –

+1

http://stackoverflow.com/questions/13266700/an-unexpected-token-create-trigger/13271559可能的重复 – mustaccio

回答

0

任何你在行 P1开始从事数据工作室错误的原因:BEGIN是,你可能想从SQL编辑器 创建SP,而不是从例程编辑器创建它。

以下是您应该做的: - 1.从Data Source Explorer中,连接到您的数据库。 2.从Data Project Explorer中,使用从DSE连接的连接创建一个新的数据开发项目。 3.现在在您的项目下,右键单击存储过程,然后单击新建 使用任何模板或仅采用默认值,然后您将看到打开一个新的例程编辑器。 我测试这个简单的代码: - CREATE PROCEDURE db2inst1.TEST_PROC1(IN ID INT) DYNAMIC RESULT SETS 1 P1:BEGIN - 声明光标 DECLARE光标1 CURSOR WITH RETURN FOR SELECT NAME FROM SYSIBM.SYSTABLES; - 游标留在客户端应用程序中 OPEN cursor1; END P1

注意: - 你不需要;在P1结束时。

现在通过点击例程编辑器右上角的保存按钮旁边的Deploy图标,将其部署到SP到db2。

我希望这会有所帮助。

谢谢, Chuckz。