Mon*_*ica -1 oracle plsql oracle11g
我正在运行存储过程:
CREATE OR REPLACE MYSP (runDate Date)
BEGIN
EXECUTE IMMEDIATE 'CREATE TABLE MYTABLE AS (SELECT * FROM DATATABLE WHERE DATADATE = :1' USING runDate);
END MYSP;
Run Code Online (Sandbox Code Playgroud)
我收到错误 -
ORA-01027: bind variables not allowed for data definitions operations
ORA-06512: "Database.MYSP", line 4
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我在哪里出错.
Jus*_*ave 10
该错误非常明显.您不能在DDL语句中使用绑定变量.
令人难以置信的是,你真的想要动态地在Oracle中创建一个表是非常不可能的.我强烈建议退一步,找到一种不同的方式来设计系统,这样你就不会尝试在运行时创建表.
如果您确信您有一个需要在运行时创建表的特殊需求,则不能使用绑定变量,并且您不希望使用不匹配的括号(您有一个左括号但没有右括号).假设您忽略了时间组件,例如
EXECUTE IMMEDIATE 'CREATE TABLE MYTABLE ' ||
' AS ' ||
' SELECT * FROM DATATABLE WHERE DATADATE = to_date( ' ||
to_char( runDate, 'YYYY-MM-DD' ) ||
', ''YYYY-MM-DD'')';
Run Code Online (Sandbox Code Playgroud)
应该管用.
| 归档时间: |
|
| 查看次数: |
1997 次 |
| 最近记录: |