如何在Redshift中创建return语句

时间:2018-11-13 23:39:49

标签: amazon-redshift

我在SQL Server上有以下sql

declare @groupName varchar(50)

select   @groupName=groupIdentifier from tab1 where col3 ='ABC'

if @groupName is not NULL
    select @groupName
    return

select   @groupName=col2 from tab2 where col1= 'BCD'
if @groupName is not NULL
    select @groupName
    return

我翻译成RedShift如下:

 create temp table t1
(groupName)
---- Statement 1 -----
insert into t1 select groupIdentifier from tab1 where col3 ='ABC'
---- Statement 2 -----
insert into t1 select col2 from tab2 where  col1= 'BCD' and (select count(1) from t1)=0
select * from t1

由于RedShift中没有return语句,因此即使在语句1能够获取行的情况下,语句2也总是被执行。由于第二条语句的成本很高,因此如果语句1成功,我如何有效地阻止其执行。

1 个答案:

答案 0 :(得分:0)

您不能仅在Redshift上仅使用SQL语句来重新创建此逻辑。 Redshift SQL语法不包含流控制命令,例如IFRETURN

通常,您将需要某种外部程序或脚本来管理流控制逻辑,以计算出要执行的SQL语句和返回的结果。