【问题标题】:Error when comparing values in Oracle在 Oracle 中比较值时出错
【发布时间】:2010-11-24 07:30:48
【问题描述】:

我写了简单的程序。

DECLARE
  connection_id LINE.CONNECTION_ID%TYPE := 11009;
  tmp_integer INTEGER;
BEGIN
  SELECT COUNT(*) INTO tmp_integer FROM LINE WHERE LINE.CONNECTION_ID = 11009;
  DBMS_OUTPUT.PUT_LINE(connection_id);
  DBMS_OUTPUT.PUT_LINE(tmp_integer);
END;

发射结果:

11009
3

结果很好。我只有 3 行 CONNECTION_ID 为 11009。 修改后:

DECLARE
  connection_id LINE.CONNECTION_ID%TYPE := 11009;
  tmp_integer INTEGER;
BEGIN
  SELECT COUNT(*) INTO tmp_integer FROM LINE WHERE LINE.CONNECTION_ID = connection_id;
  DBMS_OUTPUT.PUT_LINE(connection_id);
  DBMS_OUTPUT.PUT_LINE(tmp_integer);
END;

但在这种情况下,我得到了奇怪的结果:

11009
30997

错在哪里?

【问题讨论】:

    标签: oracle stored-procedures select count


    【解决方案1】:

    尝试将 PL/SQL 变量的名称更改为与表中的列名不同,例如v_connection_id。

    【讨论】:

    • 是的,这是一个错误。谢谢!
    • 不客气 - 附加说明 - 采用一种减少 PL/SQL 变量和列名之间冲突机会的编码风格是一种很好的一般做法,例如v_COLUMN_NAME 或 vCOLUMN_NAME - 在您的代码中这很容易发现,但是具有长游标定义和许多变量的包可能会导致大量的调试浪费时间。
    猜你喜欢
    • 1970-01-01
    • 2015-09-08
    • 2012-03-26
    • 2014-10-23
    • 2021-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    相关资源
    最近更新 更多