Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle存储过程游标始终返回零行_Oracle_Plsql - Fatal编程技术网

Oracle存储过程游标始终返回零行

Oracle存储过程游标始终返回零行,oracle,plsql,Oracle,Plsql,我将此光标放在包中的过程中: PROCEDURE CANCEL_INACTIVE(IN_DAYS_OLD NUMBER) IS CURSOR inactive IS SELECT * FROM MY_TABLE WHERE STATUS_CHANGED_DATE <= TRUNC(SYSDATE-IN_DAYS_OLD) AND CANCEL_CD IS NULL; rec inactive%ROWTYPE;

我将此光标放在包中的过程中:

PROCEDURE CANCEL_INACTIVE(IN_DAYS_OLD NUMBER)
IS
    CURSOR inactive IS
          SELECT * FROM MY_TABLE
          WHERE STATUS_CHANGED_DATE <= TRUNC(SYSDATE-IN_DAYS_OLD) 
          AND CANCEL_CD IS NULL;

  rec  inactive%ROWTYPE;

BEGIN
     OPEN inactive;
     LOOP
          FETCH inactive INTO rec;
          EXIT WHEN inactive%NOTFOUND;

          -- do an update based on rec.id
     END LOOP;
END;

END CANCEL_INACTIVE;
PROCEDURE CANCEL\u INACTIVE(天数\u旧编号)
是
光标处于非活动状态
从MY_表中选择*

状态改变的地方\u DATE您可能正在对非限制数据进行测试

或者:您没有根据rec.id提交更新


或者:您的更新不起任何作用。(目标表上的任何行都不满足where子句)

您可能正在对非限制数据进行测试

或者:您没有根据rec.id提交更新


或者:您的更新不起任何作用。(目标表上的任何行都不满足where子句)

您如何知道光标有零行?您是否在几天以前使用完全相同的查询进行了测试?我通过使用它的应用程序运行了该函数,但没有看到该函数的效果。然后,我通过在调试模式下编译并使用测试脚本逐步使用我使用的IDE完成代码来验证这一点。@Florin另外,我还使用声明的in_DAYS_OLD进行了测试。我还测试了它,只需在它的位置放置一个显式整数。我甚至用一个整数替换了过程本身的IN_DAYS_OLD,但仍然得到零行。您能在输入前使用dbms_输出。put_行('start')和dbms_输出。put_行(rec.id)进行测试吗在循环中?您如何知道光标有零行?您是否使用在_DAYS _OLD中完全相同的行测试了查询?我在使用该函数的应用程序中运行了该函数,但没有看到该函数的效果。然后,我通过在调试模式下编译并使用测试脚本逐步使用我使用的IDE完成代码来验证这一点。@Florin另外,我还使用声明的in_DAYS_OLD进行了测试。我还测试了它,只需在它的位置放置一个显式整数。我甚至用一个整数替换了过程本身的IN_DAYS_OLD,但仍然得到零行。您可以使用dbms_输出进行测试吗?输入前输入一行(“start”),然后在循环中输入一行dbms_输出。输入行(rec.id)?