我正在创建一个程序 . 我正在从表中选择一个最大日期到var,然后打算在sql中使用该var作为游标 . 看起来像:
l_max_update_date DATE;
--Param var
l_max_update_date := NULL;
SELECT max(pivlog.last_update_date) as maxdate into l_max_update_date
FROM piv_verification_log pivlog;
...然后...
--No data in log table? Create a max_update_date
IF l_max_update_date IS NULL
THEN
l_max_update_date := TO_TIMESTAMP('2014/SEP/1 00:00:00', 'YYYY/MON/DD HH24:MI:SS');
END IF;
最后...
--Get affected employees (those who have certified since the max(last_update_date) listed in the log table)
CURSOR affected_employees_cursor
IS
SELECT [columns]
FROM [tables]
WHERE LAST_UPDATE_DATE > l_max_update_date;
但是,每当我编译,我收到此错误消息:
[错误] PLS-00103(47:22):PLS-00103:遇到以下其中一项时遇到符号“=”:常量异常表long double ref char time timestamp
在这一行指出:
l_max_update_date := NULL;
我很感激你的见解 . 我认为它与我定义var和cursor(?)的过程中的顺序或位置有关 .
谢谢 .
2 回答
除了Bob的回答之外,游标将使用
l_max_update_date
在游标打开时的任何值,因此在声明游标之前不必设置它 .如果您希望在代码中更明显,那么您也可以将日期作为参数传递给游标:
然后调用它:
或者您可以将查找组合到游标定义中,只要您只打开一次,并跳过单独的查找并检查:
甚至更简单地使用隐式游标循环:
当然,根据您从光标中获取的数据所做的事情,这可能根本不需要PL / SQL,可以在纯SQL中完成 .
在第一个BEGIN之前,您不能拥有可执行代码 . 如果你发布了你的程序的所有代码,这将有所帮助,但鉴于上面可以看到它,我认为你的程序应该是这样的:
分享和享受 .