2012-12-30 35 views
1

我不明白爲什麼變量聲明命令不起作用。你可以幫幫我嗎?簡單變量Daclaration

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

你有幾個錯誤。

變量應該定義爲seperatley,而不是用逗號。即:

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; 
/

(p。不要忘記varchar2的長度)

+0

它的工作原理 - 謝謝! – TheSpaceboy0

0

不要通過聲明變量來使用冒號。 嘗試:

DECLARE

vENAME:= & rek_pers;

vSAL:= & year_sal;

+0

不幸的是我收到了更多的錯誤:/但謝謝。 – TheSpaceboy0