1

その変数宣言コマンドが機能しない理由がわかりません。私たちを手伝ってくれますか?

SET SERVEROUTPUT ON
ACCEPT rek_pers PROMPT 'Employee name: '
ACCEPT year_sal PROMPT 'Yearly salary: '

VARIABLE vENAME VARCHAR2,vSAL NUMBER

DECLARE
:vENAME := &rek_pers;
:vSAL := &year_sal;

BEGIN  
UPDATE Emp SET Emp.Sal = vSAL
Where Emp.Ename = vENAME;

COMMIT;
END;
/

回答を受け取りました:バインド変数「vENAME」は宣言されていません

よろしくお願いします!

4

2 に答える 2

4

いくつかのエラーがあります。

変数は、コンマではなく、個別に定義する必要があります。すなわち:

VARIABLE vENAME VARCHAR2
VARIABLE vSAL NUMBER

次に、これは無効な構文です。

:vENAME := &rek_pers;
:vSAL := &year_sal;

それは単純である必要があります(variable必要な定義なしで):

DECLARE
vSAL Emp.Sal%type := &year_sal;
vENAME Emp.Ename%type := '&rek_pers';
BEGIN  
UPDATE Emp SET Emp.Sal = vSAL
Where Emp.Ename = vENAME;

COMMIT;
END;
/

変数を割り当てたい場合、正しい方法は次のとおりです。

VARIABLE vENAME VARCHAR2(200)
VARIABLE vSAL NUMBER
EXEC :vSAL := &year_sal;
EXEC :vENAME := '&rek_pers';
BEGIN  
UPDATE Emp SET Emp.Sal = :vSAL
Where Emp.Ename = :vENAME;
COMMIT;
END;
/

(psはvarchar2の長さを忘れないでください)

于 2012-12-30T23:57:22.333 に答える
0

変数を宣言してコロンを使用しないでください。試す:

宣言する

vENAME:=&rek_pers;

vSAL:=&year_sal;

于 2012-12-30T23:51:40.810 に答える