0
Declare
v_cnt varchar2(20);
v_cnd varchar2(20);
v_total varchar2(20);
begin
select count(emp_id) into v_cnt from emp1;
select count(emp_id) into v_cnd from emp2;
v_total:=v_cnt+v_cnd;
dbms_output.put_line('before');
dbms_output.put_line(v_total);
update emp3 set total_emp=v_total where dept_no=40;
commit;
dbms_output.put_line('after');
dbms_output.put_line(v_total);
end;
在上述程序中,total_emp列的值正在更新爲0而不是數值。 但是,當我使用dbms_output語句來打印值時,對於這兩種情況,在獲取變量v_total的數值之前和之後。PL/SQL - 列值更新爲0而不是數值
v_total值未更新爲表中的列值。
total_emp的表列定義是varchar2(20)。
此外,我試圖在上面的語句中爲total_emp列的硬編碼值,它工作。
因此,問題是在更新語句中使用它時沒有更新到列的變量值。
請幫幫我。
「* total_emp is varchar2(20)*」。哎喲!!!做***不***存儲字符列中的數字。決不。永遠。 –
它是否更新爲零,還是已經爲零並且未更新到期望值?你真的在'emp3'中有一行'dept_no = 40' - 那裏的where子句仍然存在於你的硬編碼值版本中? –