由於所有結果都是在空白區而不是實際列值上拆分的,因此在將列值存儲到shell腳本變量時遇到問題。將CHAR或CLOB sqlplus列存儲到shell腳本變量中
例如,這是我現在得到:
set -A SQL_RESULTS_ARRAY `sqlplus -s un/[email protected] << EOF
SET ECHO OFF
SET FEED OFF
SET HEAD OFF
SET SPACE 0
SELECT EMAIL_SUBJECT, MAIL_TO FROM EMAIL_TABLE;
EOF`
echo "${SQL_RESULTS_ARRAY[0]}"
echo "${SQL_RESULTS_ARRAY[1]}"
這不起作用,因爲EMAIL_SUBJECT的價值是整個句子,即「信息學科測驗」,所以那些回聲剛剛結束了印刷
Message
subject
而不是
Message subject test
[email protected] [email protected]
基本上,我該怎麼收場,只有兩個項目我數組(每列一個),而不是五個項目(每個單詞一個)?這是否可能只有一個連接? (我寧可不開始每列新的連接)
編輯:另一件事,另一個我的CLOB列是EMAIL_BODY,它可以基本上是任何文本 - 因此我寧願沒有預設分隔符,因爲EMAIL_BODY可以有各種逗號,管道,新線等......
我該如何區分它們?我在數據庫中將EMAIL_SUBJECT的值更改爲「郵件主題測試」,並執行了「SET COLSEP」,但它不起作用(但這可能不是您的意思) – beans 2011-03-03 21:26:10
我也將查詢更改爲SELECT EMAIL_SUBJECT ,(SELECT','FROM DUAL),MAIL_TO FROM EMAIL_TABLE;'與SET COLSEP'一起使用,都不起作用 – beans 2011-03-03 21:26:31
@beans:你可以參考任何sqlplus引用(只需要搜索** sqlplus set colsep * *)。 **設置colsep **的參數是要在列之間輸出的字符串。你可以像這樣設置它:** set colsep'---'**,看看會發生什麼。對不起,沒有sqlplus方便,所以不會提供一個完整的解決方案,但是一旦你爲你的環境選擇了一個唯一的字符串,你就可以將之前和之後的字符串分開。 – 2011-03-03 21:41:02