0
我試圖寫它提示模式所有者並丟棄所有相應模式的bash函數。錯誤,同時通過bash的用戶輸入的SQL語句
function db_cleanup
{
#accept user input
read -p "Schema Owner: " input
sqlplus -s $usr1/[email protected]$sid1 << EOF
declare
usr_d varchar2(10) := '&input'; --reas user input here
sqlstmt varchar2(128);
begin
sqlstmt := 'drop user '||$usr_d||' cascade';
dbms_output.put_line(sqlstmt); execute immediate sqlstmt;
sqlstmt := 'drop user ab_'||$usr_d||' cascade';
dbms_output.put_line(sqlstmt); execute immediate sqlstmt;
sqlstmt := 'drop user xy_'||$usr_d||' cascade';
dbms_output.put_line(sqlstmt); execute immediate sqlstmt;
end;
/
EOF
}
輸出的樣子:
Enter Schema Owner: ABC
Enter value for usr_in:
User requested Interrupt or EOF detected.
-bash-3.2$
請讓我知道如何解決這一問題之一。提前致謝。
你不應該用'> EOF'完成嗎? – fedorqui 2013-02-26 20:43:38
認爲它應該是''input''而不是''input'',在'declare'下面的行中。也許''$ usr_d'而不是'$ usr_d' – 244an 2013-02-26 20:55:10
@ 244an:用'&input'替換'$ input'修復了一個問題,即我沒有看到'輸入usr_in:'的值。但後者仍然有問題 - 'sqlstmt:='drop user'||||'級聯'; PLS-00103:遇到符號「|」在需要下列之一時: ( - +殼體模新空<標識符> '' – itsh 2013-02-26 21:27:18