为oracle中的可重用性声明变量并赋值

为oracle中的可重用性声明变量并赋值,oracle,Oracle,在Oracle中,我需要在多个表中使用ID来更新值,我试图获得如下值,然后分配给一个变量,然后尝试使用,但我得到了一个错误 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

Oracle
中,我需要在多个表中使用ID来更新值,我试图获得如下值,然后分配给一个变量,然后尝试使用,但我得到了一个错误

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:遇到符号 当预期出现以下情况之一时,请选择:

(+case mod new not null continue avg count current) 存在执行所有合并之前的最大最小sql STDEV和方差 时间戳间隔日期管道 你需要:

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;

从中选择ID到myVal。。。