2017-07-19 83 views
0

我想編寫一個腳本,:如何使用SQLPLUS查詢的輸出提示用戶輸入更多

  1. 提示您輸入一個名稱
  2. 在sqlplus的數據庫,以查看是否一個select count它存在
  3. 最終用戶查看查詢結果並提示詢問用戶他們是否想運行語句2
  4. 如果您說是,則運行statement2。如果沒有腳本被殺害

我遇到的問題是第一次查詢運行後,檢查它是否存在,我不知道如何添加一個提示,詢問您是否要插入到數據庫

這裏是我到目前爲止的代碼:

echo "Please enter last name: 'input;" 
read input 

statement1="select count(*) as count from users 
where fname = '"$input"'" 

statement2="INSERT INTO users VALUES ('"$input"'); 
$ORACLE_HOME******************************** 
    $statement1 
    /
    quit; 
Eossql 

我想不通的部分,執行語句1後,我希望系統詢問是否說法2應該執行的。有什麼建議麼?

謝謝!

編輯: 感謝CDahn的建議,這是我編輯的代碼。這種解決方案的工作原理,但我想知道是否有一個更乾淨的方法來做到這一點,而不是連接到兩次sqlplus。

echo "Please enter last name: 'input;" 
read input 
Statement2="INSERT INTO users VALUES ('"$input"');" 
output1=$($sqlplus -s User/[email protected] <<EOF 
set head off 
select count (*) from users 
where fname = '$input'; 
EXIT; 
EOF 
) 

read -p "User $input appears $output1 times. Create user? [Y/n]" answer 
if [ -z "$answer" -o "$answer" == "y" -o "$answer" == "Y" ] 
then 

$sqlplus -s User/[email protected] << Eossql 
set autocommit on 
set head off 
$Statement2 
    quit; 
Eossql 

else 
    echo "Not creating user" 
fi 
+0

您將需要問這個問題,然後有一個if語句處理響應。 –

回答

2

您需要調用添加到sqlplus讓你寫的查詢的輸出。請參閱this SO question以獲取相關幫助。

一旦你有輸出,你可以使用條件,如拉曼Sailopal建議。例如:

output1="`sqlplus $statement1`" 

read -p "User $input appears $output1 times. Create user? [Y/n]" answer 
if [ -z "$answer" -o "$answer" == "y" -o "$answer" == "Y" ] 
then 
    sqlplus $statement2 
else 
    echo "Not creating user." 
fi 
+0

這不是他要問的。在繼續執行語句之前,他無法弄清楚如何讓Shell腳本請求確認。 –

+1

@UlisesAndréFierro,他的問題比這個更多。他甚至不會查詢數據庫來首先做出決定。我想我至少會試圖讓他進入該地區,而不是將其標記爲重複或不可撤銷。但我同意,他正在尋求有條件的幫助並提示用戶,但他也需要幫助其他所有人。 – CDahn

+0

我認爲他展示了他有問題的部分代碼,並且他以某種方式執行了這些陳述,但是你是對的,如果這是整個腳本,那麼他肯定會問錯誤的問題。 –