DB2在存储过程中声明/设置变量

时间:2012-06-18 22:23:51

标签: sql stored-procedures db2

我无法编译这个存储过程,我只想声明并设置一个将在proc中使用的变量。注意:shipNo是唯一的传入参数,并且是VARCHAR(32)。

P1: BEGIN
DECLARE @likeShipNo VARCHAR(32);
SET likeShipNo = '%' || shipNo || '%';

DECLARE cursor1 CURSOR WITH RETURN FOR
    SELECT ADV_SHIP_NOTICE_NO,
        VNDR_ID,
        LOC,
        CARR_CD,
        CARR_PRO_NO,
        BL_NO,
        SHIP_EQUIP_ID,
        TS_LOAD

        FROM TRITS

        WHERE ADV_SHIP_NOTICE_NO LIKE(@likeShipNo); 
OPEN cursor1;
END P1

1 个答案:

答案 0 :(得分:3)

DB2中的变量不需要MSSQL中的@like。此外,当您返回光标时,您需要在开始之前添加句子RESULT SET 1并将WITH RETURN TO CLIENT添加到要返回的光标。程序应如下所示:

CREATE BEGIN MYSCHEMA.MYPROC (
    IN shipNo VARCHAR(30) )
BEGIN
    DECLARE likeShipNo VARCHAR(32);

    SET likeShipNo = '%' || shipNo || '%';

    DECLARE cursor1 CURSOR WITH RETURN TO CLIENT FOR
        SELECT
            ADV_SHIP_NOTICE_NO,
            VNDR_ID,
            LOC,
            CARR_CD,
            CARR_PRO_NO,
            BL_NO,
            SHIP_EQUIP_ID,
            TS_LOAD
        FROM
            TRITS
        WHERE
            ADV_SHIP_NOTICE_NO LIKE likeShipNo;
    OPEN cursor1;
END;