在一个数据库中有俩个用户:A和B 我想把A用户的数据复制到B用户中 (B中已经定义好了A中表结构)
我写了个储存过程: 主要代码
sql_statments:='insert into :1 select * from :2';
EXECUTE IMMEDIATE sql_statments using i_table_name,i_old_table_name;
其中 i_table_name是输入参数 代表B用户的表 i_old_table_name是输入参数 代表A用户的表 可以一直说表名无效 !! i_old_table_name的参数是 A.表名
我写了个储存过程: 主要代码
sql_statments:='insert into :1 select * from :2';
EXECUTE IMMEDIATE sql_statments using i_table_name,i_old_table_name;
其中 i_table_name是输入参数 代表B用户的表 i_old_table_name是输入参数 代表A用户的表 可以一直说表名无效 !! i_old_table_name的参数是 A.表名
你可以使用动态拼接SQL方式
i_old_table_name := 'A.tab1';
i_table_name := 'tab1';
sql_statments:='insert into '|| i_table_name||' select * from '|| i_old_table_name;
EXECUTE IMMEDIATE sql_statments;
直接用b登录然后执行
insert into tablename select * from a.tablename
前提是b用户要有查询a的tablename的权限
---表名 跟字段名 不能用绑定变量 就是因为多了' ' 你想想就知道 只能|| sql_statments:='insert into '||i_table_name||' select * from '||i_old_table_name
EXECUTE IMMEDIATE sql_statments;
显示 表名或试图名不存在这是为什么啊