声明变量并为Oracle中的可重用性分配值

时间:2018-07-26 11:19:59

标签: oracle

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总和方差执行全部合并   时间时间戳记间隔日期管道   

1 个答案:

答案 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;