Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 从plsq执行copy from命令_Oracle_Plsql_Oracle10g - Fatal编程技术网

Oracle 从plsq执行copy from命令

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命令。因此,它只在

如何在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命令。因此,它只在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,这真的很有帮助。谢谢。