0
テーブルをロードする前に、入力ファイルの可用性に基づいて既存のテーブルを切り捨てたいので、フラットテキストファイルからテーブルをロードするスクリプトがあります。 入力ファイルがある場合は、テーブルを切り捨て、新しいデータをファイルからテーブルにロードします。切り捨てながら は、だから私は、入力ファイルが存在しているかどうかを確認したいので、私のようなコードを書いた:入力のBEGIN ENDステートメントにif-else条件を追加する方法SQL PLUSへのクエリー
truncateTables()
{
QUERY_TO_TRUNCATE_TABLES="ALTER SESSION ENABLE PARALLEL DML;
whenever sqlerror exit sql.sqlcode;
BEGIN
if [$IsFile1 == 'TRUE']
then
EXECUTE IMMEDIATE 'DELETE /*+ parallel(A,8) */ FROM TableName1 A';
else
echo "no input file"
fi;
if [$IsFile2 == "TRUE"]
then
EXECUTE IMMEDIATE 'DELETE /*+ parallel(B,8) */ FROM TableName2 B';
else
echo "No input file"
fi;
COMMIT;
END;
/
";
EXECUTE_TO_TRUNCATE_TABLES=`sqlplus -s $DB_CONN_STR << EOF
SET serverout on feed off heading off tab off serverout on pagesize 0 trimspool on linesize 1000
whenever sqlerror exit sql.sqlcode;
${QUERY_TO_TRUNCATE_TABLES};
EXIT;
EOF`
retVal=$?
errorORA=`echo "${EXECUTE_TO_TRUNCATE_TABLES}" | grep -i 'ORA' | wc -l`
errorSP=`echo "${EXECUTE_TO_TRUNCATE_TABLES}" | grep -i 'SP' | wc -l`
if [[ $retVal -ne 0 || ${errorORA} -ge 1 || ${errorSP} -ge 1 ]]
then
echo "Exiting with failure.......\n$retVal\n........"
echo "Delete tables FAIL."
else
echo "tables Delete is Successful"
fi
}
しかし、他の条件が間に開始と終了ならば、我々が使用できないようですか?私はこのコードをSQL PLUSに渡すことができるように、このコードをどのように変更できますか?他の方法でも大丈夫です。
を助け間BEGINとQUERY_TO_TRUNCATE_TABLESのENDということでしょうか? Oracleが理解できる言語であるPL/SQLではありません。 –
mysqlタグが選択されているのはなぜですか? – Noob
BEGIN ENDブロックにはPL/SQLコードが含まれています。 –