你好,我对雪花有一个疑问如何在下一个sselect会话中使用变量结果。
我想将一个语句结果存储在变量中,该变量结果需要调用雪花服务器中的另一个语句。
use schema test.public;
create or replace procedure empresult()
returns table ()
language sql
as
$$
set empresult=(select deptid from TEST.PUBLIC.DEPT where deptid=10)
declare res resultset(
select * from emp where deptno in ($empresult)
)
begin
return table(res);
end;
$$;
上面的语句出错。语法错误:unexpected 'declare'。(4号线)
请告诉我如何编写存储过程查询将一个语句结果调用到另一个会话选择语句任务。
示例代码缺少冒号和变量的正确语法。
一个可行的修复方法:
create or replace procedure empresult()
returns table ()
language sql
as
$$
declare
empresult integer;
begin
select deptid into :empresult from DEPT where deptid=10;
let res resultset := (select * from emp where deptno = :empresult);
return table(res);
end;
$$;
call empresult();
暂存数据:
create temp table dept as select 10 deptid;
create temp table emp as select 'a' a, 'b' b, 10 deptno;