[英]Copy table from another schema doesn't work dynamically
我正在尝试使用以下方法将表(模式+数据)从一个模式复制到另一个模式: create table as select * from my_table
我想从某个表列表做,所以我写了一个cursor
DECLARE
p_site nvarchar2(200);
v_cmd nvarchar2(1000);
v_tablename nvarchar2(100);
CURSOR export_running IS
SELECT tablename FROM TABLES_TABLE;
BEGIN
p_site:='site_name';
OPEN export_running;
LOOP
FETCH export_running INTO v_tablename;
EXIT WHEN export_running%NOTFOUND;
v_cmd:='create table '||v_tablename||' as select * from '||p_site||'.'||v_tablename;
execute immediate v_cmd;
END LOOP;
CLOSE export_running;
END;
当我运行我得到的代码时
PLS-00382: expression is of wrong type
ORA-06550: line 20, column 6:
PL/SQL: Statement ignored
06550. 00000 - "line %s, column %s:\n%s"
但是,如果我打印该语句并运行它,它运行良好。
我无法动态创建从一个模式到另一个模式的表是一个已知问题吗? 有什么建议吗?
谢谢!
不要使用NVARCHAR2
数据类型。 从文档中:
execute_immediate_statement
dynamic_sql_stmt
表示 SQL 语句的字符串文字、字符串变量或字符串表达式。 它的类型必须是 CHAR、VARCHAR2 或 CLOB。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.