Verticaでは、特定の条件が満たされた場合にスクリプトの実行を停止したいと思います。たとえば、テーブルにゼロ以外の行があることが判明した場合、スクリプトの残りの部分は実行しないでください(つまり、スクリプトを終了する必要があります)。何らかのエラーメッセージが表示されます(例:SQL SERVERのRAISEERROR) 。Verticaのスクリプトの実行を中断または中断する(またはエラーを発生させる)方法
私はこれだけのように、CASE WHEN
とスクリプトの残りの部分を包むと考えることができます:
CASE
WHEN (
SELECT
COUNT(*)
FROM
my_table) <= 0 THEN
'the rest OF the script here'
ELSE
'ALERT: Make sure there is nothing left in my_table'
END
しかしにVerticaにおける代替(より標準的)なアプローチがある場合、私は思ったんだけど。事前にあなたの提案をありがとう!
あなたは、具体的vsql'スクリプト 'について話していますか?あなたが正しくやろうとしているときにわかったら、あなたが持っているものはうまくいかないでしょう。スクリプトの例を教えてください。また、VerticaはOLTPデータベースではないことも知っています。行ごとの処理を計画しているようです。もしそうなら、私の提案は...そうではありません。 – woot
@woot、返信ありがとうございます。私はvertica sql(vsql?)スクリプトを使用しており、ここで共有されています[http://sqlfiddle.com/#!9/9eecb7db5/1197]。自動/スケジュールされたプロセスの一部として、マップされていない/新しい 'campaign_group_name'があるかどうかを検出し、そうであれば、次のステップに進まないことを計画しています。私は行ごとに処理しようとしていません。 'campaign_group_names_to_map'テーブルに行があるかどうかを確認したいのですが、上記のフィードバックのStep4を超えて進まないでください。あなたが提供できるアドバイスをありがとうございます! – user1330974
だから、Verticaについてのいくつかのこと。実際にはストアドプロシージャはありません(ただし、UDXはありますが、サーバーレベルでインストールする必要があり、クエリを実行してそのようなフロー制御を行うことはできません)。スクリプトでsqlを実行するユーティリティは 'vsql'です。それは、あなたがしようとしているものに関して機能が制限されています。 'vsql'にはフロー制御がありません。私は、Pythonのようなスクリプト言語を使うか、 'vsql'呼び出しをラップするシェルスクリプトを書くことをお勧めします。おそらくエラー状態を強制する方法がありますが、それはvsqlハックのようなものです。 – woot