0

入力の長さが 7 未満かどうかを確認しようとしています。エラー メッセージが表示されるはずですが、以下のコードは機能しません。どうしたの?

CREATE OR REPLACE PROCEDURE prc_staffContact(IN_staffID IN CHAR, IN_staffContact IN VARCHAR) IS

    v_staffName VARCHAR(50);
    v_staffID CHAR(6);
    v_staffContact VARCHAR(11);


BEGIN

    SELECT s.staffName, s.staffID, s.staffContact
    INTO v_staffName, v_staffID, v_staffContact
    FROM staff s
    WHERE staffID = IN_staffID;

    IF (LENGTH(IN_staffContact) < 7 )
    THEN
        DBMS_OUTPUT.PUT_LINE('Error. Contact number at least 7 digits.');
    ELSE    
        UPDATE staff
        SET staffContact = IN_staffContact
        WHERE staffID = IN_staffID;

        DBMS_OUTPUT.PUT_LINE('=============================================================================');
        DBMS_OUTPUT.PUT_LINE('The contact number of [ ' ||v_staffName || ' ] has been updated successfully.');
        DBMS_OUTPUT.PUT_LINE('New contact number: [ ' ||v_staffContact || ' ].');
        DBMS_OUTPUT.PUT_LINE('=============================================================================');

    END IF;

END;
/ 
4

2 に答える 2

0

コードを注意深く見てください。変数の型に互換性がないか、ストアド プロシージャのパラメーターが他の変数 (またはテーブルの列、列の型) と互換性がない可能性があります。あなたのコードをデータベースでテストしましたが、すべて成功しました。ただし、select ステートメントにデータが見つからないというエラー、またはバッファが小さすぎるエラーである可能性があります。これがお役に立てば幸いです。ありがとう

于 2013-07-20T05:21:36.130 に答える