gpt4 book ai didi

oracle - pl/sql 程序中的错误计数 (*)

转载 作者:行者123 更新时间:2023-12-04 05:03:44 24 4
gpt4 key购买 nike

Oracle 11g 快捷版 11.2.0

表“RIGHT”数据(仅包含名称为测试的 1 行):

身份证 |姓名

1 测试

2 新 2

3 新14

...

SELECT COUNT(*) FROM RIGHT WHERE name = 'Test';

结果 = 1

我在包 TEST 中有程序:

    create or replace
PACKAGE BODY TEST
AS
PROCEDURE FIND_RIGHT(rightName IN VARCHAR2)
IS
countrows NUMBER;
BEGIN
SELECT COUNT(*) INTO countrows FROM RIGHT WHERE name = rightName;

/* DEBUG POINT !!! in this point countrows = 212 !!!! */
...
END;
END TEST;

并从其他程序运行它:
    DECLARE
rightName VARCHAR2(200);
BEGIN
rightName := 'Test';
TEST.FIND_RIGHT(rightName);
END;

我在选择后运行调试器(在 Oracle SQL Developer 中)和调试点。
我看到计数 = 212。

为什么计数 != 1 ???

更新:
所有事务都已提交。仅打开 1 个 session (来自 SQL Developer)。表权限有3个索引(表很大,我没有在帖子中写所有列)。过程有许多输入参数(自定义对象),但我删除了额外的信息。

更新 #2:
我将代码更改为
    create or replace
PACKAGE BODY TEST
AS
PROCEDURE FIND_RIGHT(rightName IN VARCHAR2)
IS
countrows NUMBER;
testVar VARCHAR2(200);
BEGIN
testVar := 'Test';
SELECT COUNT(*) INTO countrows FROM RIGHT WHERE name = testVar;

/* in this point countrows = 1 */
...
END;
END TEST;

最佳答案

我猜你的表包含一个名为“rightName”的列?

如果是这种情况,您的原始查询将比较“name”和“rightName”列,而不是使用过程参数。

尝试更改参数名称。

关于oracle - pl/sql 程序中的错误计数 (*),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15791568/

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