【发布时间】:2011-06-04 02:18:07
【问题描述】:
我希望能够像这样执行下面的过程:
exec procname('29-JAN-2011');
过程代码是:
PROCEDURE procname(pardate VARCHAR2) IS
vardate DATE := to_date(pardate, 'DD-MON-YYYY');
SQLS VARCHAR2(4000);
BEGIN
SQLS := 'SELECT cola, colb
FROM tablea
WHERE TRUNC(coldate) = TRUNC(TO_DATE('''||pardate||''',''DD/MON/YYYY''))';
EXECUTE IMMEDIATE SQLS;
END;
一直报错:
ORA-00904:“JAN”:标识符无效。
它可以编译,但是当我运行这个命令时它会抛出错误:
EXEC procname('29-JAN-2011');
【问题讨论】:
-
这不是实际代码,对吧?它不会编译。
-
我知道这只是一个示例,但该过程是否必须是动态 SQL?它可以作为常规程序正常工作。
-
它需要是动态的,因为我要让它在运行时列名是未知的
标签: sql oracle plsql dynamic-sql ora-00904