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