Shell-Script

如何將選擇語句從 Oracle 分配給 shell 變數

  • September 11, 2019

我有一個執行良好的腳本TOAD

SELECT max (ID)+1 from apps_details;

當我嘗試在 shell 腳本中執行它時,出現錯誤:

DB_CONNECT="XXXXX/XXXXX@XXXXXX"

echo "Inserting the DataBase"
/oravl01/oracle/12.1.0.1/bin/sqlplus -s $DB_CONNECT <<END
set head off
set feedback off
set pagesize 2400
set linesize 2048

ID_VAL=`SELECT max (ID)+1 from apps_details;`
exit
END
/pciuser/tools/jenkins/jenkins/scripts/Jenkins_Internal/Create_Jenkins_Container/InsertToDB.ksh[31]: syntax error at line 1: `(' unexpected

第 31行指的是oravl01行,但我知道問題不存在,因為一旦我刪除了ID_VAL分配,它就可以工作。

編寫它的正確語法是什麼?

我認為首先定義你的命令然後執行它來保存它的輸出要乾淨得多(也更簡單):

DB_CONNECT="XXXXX/XXXXX@XXXXXX"

read -r -d '' command <<END
set head off
set feedback off
set pagesize 2400
set linesize 2048
SELECT max (ID)+1 from apps_details;
exit
END

echo "Inserting the DataBase"
ID_VAL=$(/oravl01/oracle/12.1.0.1/bin/sqlplus -s "$DB_CONNECT" <<<"$command")

這樣,您可以輕鬆地將輸出儲存在一個變數中,並且您可以將命令與腳本流分開,這將使將來更容易理解和維護。

引用自:https://unix.stackexchange.com/questions/535572