在Oracle
中,我需要在多个表中使用ID来更新值,我试图获取如下所示的值,然后分配给变量,然后尝试使用,但出现错误< / p>
declare myVal varchar2;
BEGIN
begin
myVal := select ID from USER where USER_NUMBER = 53;
end;
Update myOtherTable1 SET VAL = myVal;
Update myOtherTable2 SET VAL = myVal
Update myOtherTable3 SET VAL = myVal
Update myOtherTable4 SET VAL = myVal
Update myOtherTable5 SET VAL = myVal
...........
END
错误
ORA-06550:第4行,第14列:PLS-00103:出现符号 预期以下情况之一时为“ SELECT”:
(-+ case mod new不为null继续平均当前计数 存在最大最小先前sql stddev总和方差执行全部合并 时间时间戳记间隔日期管道
答案 0 :(得分:1)
您需要:
DECLARE
myVal VARCHAR2(100); -- you need a size
BEGIN
BEGIN
SELECT ID
INTO myVal
FROM USER
WHERE USER_NUMBER = 53;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
...
WHEN TOO_MANY_ROWS
THEN
...
END;
UPDATE myOtherTable1
SET VAL = myVal;
...
END;
我在这里添加了一些异常处理,由您决定是否需要它,做什么....
使用SQLPlus而没有PL / SQL的另一种方式可能是:
SQL> variable myVal varchar2;
SQL> select 1 into :myval from dual;
1
----------
1
SQL> update someTable set n = :myval;