[英]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.