1

このストアド プロシージャをコンパイルできません。proc で使用される 1 つの変数を宣言して設定したいだけです。注: 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開始する前に文を追加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 に答える