【问题标题】:Declaring variable and assigning value for re-usability in oracle在 oracle 中声明变量并为可重用性赋值
【发布时间】:2019-02-02 10:13:20
【问题描述】:

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:遇到符号 “SELECT”当期望以下之一时:

( - + case mod new not null continue avg count current 存在 max min prior sql stddev sum variance 执行 forall 合并 时间 时间戳 间隔 日期 管道

【问题讨论】:

  • 从 ... 中选择 ID 到 myVal 中

标签: oracle


【解决方案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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-13
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-08
    • 2022-11-08
    • 1970-01-01
    相关资源
    最近更新 更多