1

我无法编译这个存储过程,我只想声明并设置一个将在 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
4

1 回答 1

3

DB2 中的变量不需要像 MSSQL 中的 @ 。另外,当你返回一个游标时,你需要RESULT SET 1在begin前加上句子,然后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;
于 2012-06-19T01:31:51.787 回答