Oracle 从plsq执行copy from命令
如何在plsql块内执行copy from命令 我有考试的复印件/test@test使用select*from emp插入emp 我如何在plsql块中调用它?我试过了Oracle 从plsq执行copy from命令,oracle,plsql,oracle10g,Oracle,Plsql,Oracle10g,如何在plsql块内执行copy from命令 我有考试的复印件/test@test使用select*from emp插入emp 我如何在plsql块中调用它?我试过了 execute immediate 'copy from test/test@test insert emp using select * from emp'; 但是,当我执行包含plsql块的脚本时 ORA-00900: invalid SQL statement 如何解决此问题复制是一个SQL*Plus命令。因此,它只在
execute immediate 'copy from test/test@test insert emp using select * from emp';
但是,当我执行包含plsql块的脚本时
ORA-00900: invalid SQL statement
如何解决此问题复制是一个SQL*Plus命令。因此,它只在SQL*Plus客户端中工作 executeimmediate是一个用于运行动态调用的PL/SQL命令,它只识别SQL和PL/SQL 我正在从sqlplus执行sqlscript 是的,但是您正在匿名块中调用COPY,因此这是一个PL/SQL范围;这意味着只使用PL/SQL和SQL 实现这一点的方法是使用shell脚本。这些都依赖于操作系统,但类似的东西可以在Linux环境下工作
#!/bin/bash
echo Please enter local Username:
read USERNAME
echo "Please enter local Password:"
read -s PASS
SID=${ORACLE_SID}
if [ "${ORACLE_SID}" != 'TEST' ]
then
sqlplus -s -l $USERNAME/$PASS@$SID << EOF
copy from test/test@test insert emp using select * from emp
exit
EOF
else
echo "Can't copy from TEST to TEST"
fi
显然,这只是对您的程序实际执行功能的猜测,但我希望您能够理解其原理。在plsql代码中,如果我们直接使用以下命令,将提供类似的输出
begin
insert into emp1 select * from emp;
end;
emp1是目标表
emp是源表有类似的问题,需要在何处创建空白结构或带有数据的结构以备份活动。请参阅链接 1从现有表创建空白结构 -在sql提示符下执行
begin
execute immediate 'create table emp1 as select * from emp where 1=2';
end;
select count(1) from emp1;
-在sql提示符下执行
从emp1中选择count1
2使用数据从现有表创建结构
-在sql提示符下执行
开始
执行立即“创建表emp1作为select*from emp”;
结束
-在sql提示符下执行
begin
execute immediate 'create table emp1 as select * from emp where 1=2';
end;
select count(1) from emp1;
我有一个sqlscript,它有一个匿名plsql块,里面有检查实例名称的if条件,如果匹配,那么我想将数据从一个数据库传输到另一个数据库,因此我使用copy-from命令。我可以使用execute immediate在plsql块内执行enable和disable触发器,但是我不能使用execute immediate使用copy from命令。我正在从sqlplus执行sqlscript。谢谢APC,这真的很有帮助。谢谢。