我有一个执行以下 sqlplus 代码的 bash 脚本 (.sh):
sqlplus -s /nolog <<EOF > /logs/sql.log
CONNECT db_user/db_password@db_name
$SQL_STATEMENT
EXIT
EOF
$SQL_STATEMENT 需要获取以下语句:
DECLARE V_EXIST NUMBER(1); BEGIN SELECT COUNT(1) INTO V_EXIST FROM USER_DB_LINKS WHERE DB_LINK = 'MY_DBLINK'; IF V_EXIST = 1 THEN EXECUTE IMMEDIATE 'DROP DATABASE LINK MY_DBLINK';END IF; END;
/
末尾的“/”必须换行才能使 sqlplus 代码正常工作。
我尝试了多种方法都不起作用,执行.sh脚本时它一直显示在同一行。
我尝试的步骤在此链接中:https://www.baeldung.com/linux/add-newline-variable-bash
非常感谢任何帮助。
谢谢你。
与
printf
:
printf -v SQL_STATEMENT '%q' "DECLARE V_EXIST NUMBER(1); BEGIN SELECT COUNT(1) INTO V_EXIST FROM USER_DB_LINKS WHERE DB_LINK = 'MY_DBLINK'; IF V_EXIST = 1 THEN EXECUTE IMMEDIATE 'DROP DATABASE LINK MY_DBLINK';END IF; END;
\\"