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