【发布时间】:2011-10-26 20:43:01
【问题描述】:
在 StackOverflow 的帮助下,我解决了一个问题,但现在我遇到了另一个问题。在我的程序中,我有以下代码:
BEGIN
FOR nr IN 1..102
LOOP
DBMS_OUTPUT.PUT_LINE(nr);
EXECUTE IMMEDIATE
'BEGIN ' ||
'IF rec.column_' || nr ||' IS NULL THEN ' ||
':x:=1; ' ||
'ELSE ' ||
':x:=0; ' ||
'END IF; ' ||
'END; '
USING OUT isnull;
IF isnull = 1 THEN
DBMS_OUTPUT.PUT_LINE('test');
END IF;
END LOOP;
结束;
不幸的是,当我尝试运行此程序时,我收到错误消息:必须声明 PLS-00201 标识符“rec.column_1”。我发现:
在您正在执行的动态 SQL 中,您引用 OrderStoreData,但在动态 SQL 中没有定义该名称的变量。 由 Execute Immediate 执行的代码在它自己的范围内执行,所有未明确定义为 NDS 的一部分或作为绑定变量传入的所有内容都将超出范围。
但我不知道如何处理。
【问题讨论】: