gpt4 book ai didi

sql - 在 Snowflake 中创建存储过程时,有没有办法返回与在其中执行的查询相同的输出?

转载 作者:行者123 更新时间:2023-12-05 02:33:15 27 4
gpt4 key购买 nike

我创建了一个存储过程来设置特定的变量值并使用该变量执行合并。目前,它只返回一条硬编码消息“成功执行”。是否有可能返回与原始合并查询返回相同的结果,例如

number of rows inserted

number of rows updated

?

    CREATE OR REPLACE PROCEDURE ALERTS_MERGE_PROCEDURE ()
RETURNS STRING NOT NULL
LANGUAGE JAVASCRIPT
AS
$$
var sql_command = '
MERGE INTO tablename
..
WHEN MATCHED THEN
UPDATE SET ...
WHEN NOT MATCHED THEN
INSERT ...
);
'
snowflake.execute(
{
sqlText: sql_command
});
return "Successfully executed.";
$$;

最佳答案

您可以迭代执行返回对象的第一行的列:

create or replace temp table tablename as
select 1::int id, 'a'::string tx;

create or replace temp table tablesource as
select 1::int id, 'b'::string tx
union select 2, 'c';

CREATE OR REPLACE PROCEDURE ALERTS_MERGE_PROCEDURE ()
RETURNS STRING NOT NULL
LANGUAGE JAVASCRIPT
AS
$$
var sql_command = `
merge into tablename a
using tablesource b
on a.id = b.id
when matched then update set tx=b.tx
when not matched then insert (id, tx) values (b.id, b.tx);
`;
var x = snowflake.execute({sqlText: sql_command});
x.next();
var result = '';
for (i=1; i<=x.getColumnCount(); i++) {
result += x.getColumnName(i) + ': ' + x.getColumnValue(i) + '\n';
}
return result;
$$;

call alerts_merge_procedure();

返回:

number of rows inserted: 1
number of rows updated: 1

关于sql - 在 Snowflake 中创建存储过程时,有没有办法返回与在其中执行的查询相同的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71040138/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com