gpt4 book ai didi

plsql - 在 Oracle 数据库 10g 和 11g 中选择更新...的差异

转载 作者:行者123 更新时间:2023-12-01 04:18:30 25 4
gpt4 key购买 nike

我发现 Oracle 数据库 10g 和 11g 对以下 PL/SQL 块的处理方式不同(为了方便,我使用了 scott 模式):

DECLARE
v_ename bonus.ename%TYPE;
BEGIN
SELECT b.ename
INTO v_ename
FROM bonus b
JOIN emp e ON b.ename = e.ename
JOIN dept d ON d.deptno = e.deptno
WHERE b.ename = 'Scott'
FOR UPDATE OF b.ename;
END;
/

虽然在 10g (10.2) 中,此代码成功结束(引发了 NO_DATA_FOUND 异常,但这是预期的),但在 11g (11.2) 中,它引发了异常“列有歧义定义”。这绝对不是预期的。似乎没有考虑表别名,因为我发现当我更改 FOR UPDATE OF 中的列时e.empno (也不起作用)到 e.mgr (这是独一无二的)它开始工作。那么这是 11g 中的一些错误吗?有什么想法吗?

最佳答案

这是 Oracle 11G 中的一个错误。它在 11.2.0.2 版本中得到修复。已在此线程中讨论过:https://forums.oracle.com/forums/thread.jspa?threadID=2314477

关于plsql - 在 Oracle 数据库 10g 和 11g 中选择更新...的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2736426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com