0
在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/#99/9eecb7db5/1197]。作爲自動化/計劃過程的一部分,計劃是檢測是否有未映射的/新的'campaign_group_name',如果是,則不要繼續下一步。我不是試圖逐行處理。只是想看看'campaign_group_names_to_map'表是否有任何行,不要在上面的小提琴的Step4之後繼續。感謝您提供任何建議! – user1330974
好吧,關於Vertica的一些事情。它實際上並沒有存儲過程(儘管它具有UDX,但需要在服務器級別安裝,並且不會真的讓你執行諸如運行查詢和流量控制之類的操作)。在腳本中運行sql的實用程序是'vsql'。它對你正在嘗試做的事情有限制的功能。 'vsql'中沒有流量控制。我會建議使用像python這樣的腳本語言,或者編寫包裝'vsql'調用的shell腳本。有一種方法可能會強制一個錯誤條件,但這是一種vsql破解。 – woot