【问题标题】:PL/SQL ORA06550 error in an update statement更新语句中的 PL/SQL ORA06550 错误
【发布时间】:2016-07-17 07:56:22
【问题描述】:

以下是我编写的 proc 代码。我在从 (A) 到 (B) 标记的块中收到语法错误,即 ORA06550,表示 SQL 命令未正确结束。

如果我删除l.ban4_upd ='UPDATED' 行,则不再有任何错误消息。 我不知道如何纠正它。希望您的帮助和提前感谢

DECLARE
    dummy_BAN4 VARCHAR2(30);
    dummy_bank_acc_num VARCHAR2(20);

    CURSOR c_customers is
       SELECT BAN4,Bank_acc_num FROM Test_Table ;

BEGIN
   OPEN c_customers;
   LOOP
      FETCH c_customers into dummy_BAN4 , dummy_bank_acc_num;
      IF c_customers%notfound THEN
      update Test_Table chs Set
      chs.error_msg ='No such record found in  DB '
      where bank_acc_num =dummy_bank_acc_num; 
        END IF;

    update Transact_ord2 l Set.........................(A)
    l.ban4_upd ='UPDATED'
    l.x_account_number =dummy_BAN4
    where X_account_number =dummy_bank_acc_num;   ..........(B)

【问题讨论】:

    标签: sql syntax


    【解决方案1】:

    您在设置的字段之间缺少,

    update Transact_ord2 
    Set ban4_upd = 'UPDATED',
    x_account_number = dummy_BAN4
    where X_account_number = dummy_bank_acc_num;
    

    Check this

    【讨论】:

    • 在此之后的部分中,我写了一个类似的更新声明,但没有错误:update Transact_profile@dblink2mondb p Set P.CUST_BANK_ACC_NUM =dummy_IBAN where CUST_BANK_ACC_NUM =dummy_bank_acc_num;结束循环;关闭 c_customers;结束;
    • @privateryan - 你还没有收到错误,因为在此之前它无法编译
    • 尚未检查...会尽快通知您。您能告诉我为什么您认为它在此之前无法编译吗?
    • 根据我在 PL/SQL 开发人员中的经验,当它出现编译错误时,它会一一给出。无论如何,对于此更新语句,我建议单独执行它以检查它是否有效。这样您就可以减少影响测试的因素。
    • 会尽快检查并通知您...非常感谢
    猜你喜欢
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多