oracle 11g 内存溢出,oracle - Oracle 11g中的合并错误 - 堆栈内存溢出

我是Oracle 11g和这个论坛的新手。 我只需要使用Oracle Merge语句运行一个简单的更新语句,因为我的SQL开发人员不会采用任何其他方式。

奇怪的是,无论我如何尝试更正语句,即使在阅读了此论坛中的许多条目后,我仍然得到完全相同的错误消息。

有两种不同的错误消息,取决于我在SQL Developer中运行语句的方式。 如果我将我的语句作为存储过程运行(更新语句是存储过程中的一小部分。我注释掉了其他SQL语句,只是在存储过程中保留了此更新语句)我收到此错误:

我跑了这个:

create or replace

PROCEDURE ADDR_UPDATE_2

AS

/* other sql statements are commented out */

MERGE INTO (SELECT id,xseq,line_1,line_2,zip,tax FROM ADDR ) b

USING (SELECT id,xseq,line_1, line_2,NVL(zip, '') AS pos_10 , NVL(tax, '') AS pos_11

FROM TEMP_ADDR ) v

ON(b.id = v.id

AND b.xseq = v.xseq)

WHEN MATCHED THEN UPDATE SET b.line_1 = v.line_1,

b.line_2 = v.line_2,

b.zip = v.pos_10,

b.tax = v.pos_11

WHERE b.line_1 <> v.line_1

OR b.line_2 <> v.line_2

OR b.zip <> v.pos_10;

/* other sql statements are commented out */

END;

我收到了这个错误:

错误(23,9):PLS-00103:遇到以下其中一项时遇到符号“INTO”:常量异常表long double ref char time timestamp interval date二进制国家字符nchar

(我到处都是鬼脸,没找到任何答案)

第23行是指“INTO”

但是,如果我自己运行上面的Merge语句,而不是作为str的一部分。 proc。,我没有得到任何错误。 我得到了一个结果:合并了0行。

现在我将Merge语句修改为:

create or replace

PROCEDURE ADDR_UPDATE_2

AS

/* other sql statements are commented out */

MERGE INTO ADDR b

USING (SELECT id,xseq, line_1, line_2, NVL(zip, '') AS pos_10,

NVL(tax, '') AS pos_11

FROM TEMP_ADDR) v

ON(b.id = v.id

AND b.xseq = v.xseq

AND b.line_1 <> v.line_1

OR b.line_2 <> v.line_2

OR b.zip <> v.pos_10)

WHEN MATCHED THEN UPDATE SET b.line_1 = v.line_1,

b.line_2 = v.line_2,

b.zip = v.pos_10,

b.tax = v.pos_11;

/*

other sql statements are commented out

*/

END;

我得到了同样的错误:

错误(23,9):PLS-00103:遇到以下其中一项时遇到符号“INTO”:常量异常表long double ref char time timestamp interval date二进制国家字符nchar

第23行是指“INTO”

当我把声明作为str的一部分运行时。 PROC:

我有一个不同的错误:

命令行出错:9列:8

错误报告:SQL错误:ORA-38104:无法更新ON子句中引用的列:“B”。“LINE_2”38104. 00000 - “ON子句中引用的列无法更新:%s”*原因:LHS of UPDATE SET包含ON子句* Action中引用的列:

我从2天前尝试寻找答案,没有结果,是否有人可以帮助如何解决这个问题?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值