2013-07-09 57 views
0

如何在plsql塊內執行命令複製?從plsq執行命令複製

例如我有copy from test/[email protected] insert emp using select * from emp;

如何在plsql塊中調用此函數?我曾與

execute immediate 'copy from test/[email protected] insert emp using select * from emp'; 

試圖然而,當我執行我的腳本有PLSQL塊給我

ORA-00900: invalid SQL statement 

我怎樣才能解決這個問題

回答

2

COPY是一個SQL * Plus命令。所以它只適用於SQL * Plus客戶端。 Find out more.

EXECUTE IMMEDIATE是一個運行動態調用的PL/SQL命令,它只識別SQL和PL/SQL。

是「我從SQLPLUS執行sqlscript」,但你調用一個匿名塊拷貝,使之與一個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/[email protected]$SID << EOF 
    copy from test/[email protected] insert emp using select * from emp 
    exit 
EOF 

else 
    echo "Can't copy from TEST to TEST" 
fi 

很明顯,這只是一個瘋狂的猜測,你的程序實際上做了什麼,但我希望你能理解原理。

+0

我有一個sqlscript,它有匿名的plsql塊,裏面,我有如果條件,檢查實例名稱,如果它匹配,然後我想將數據從一個數據庫傳輸到另一個,因此我使用'複製'命令。我可以使用'execute immediate'執行啓用和禁用plsql塊內的觸發器,但是我不能使用'execute immediate'的'copy from'命令。我正在執行'sqlplus'的sqlscript。 – user75ponic

+0

非常感謝APC,這真的很有幫助。讚賞。 – user75ponic