我目前正在迁移一个PostgreSQL过程,以便在Redshift Spectrum Serverless中工作。我能够有一个工作程序,工作作为预期的红移。然而,它最初是在SQL选择语句中使用的,我目前无法从Redshift中做同样的事情。你知道我该怎么做吗?
原始PostgreSQL过程:
CREATE OR REPLACE FUNCTION sp_test()
RETURNS date AS
$$
SELECT test_date FROM test_table
$$ LANGUAGE sql;
原始用途:
insert into random_table
select sp_test()
红移的新方法
create or replace procedure sp_test(out v_test_date date)
as $$
BEGIN
select test_date into v_test_date from test_table;
end;
$$ language plpgsql;
已尝试新SQL,但无法正常工作:
insert into random_table
select sp_test()
ERROR: sp_test() is a procedure
Hint: To call a procedure, use CALL.
PS:我知道使用CALL sp_test()可以工作,但我想使用它与一个插入,这是不工作。所以任何帮助wrt如何使这项工作将是非常感激的。
2条答案
按热度按时间fhity93d1#
谢谢@mp24的建议。我让我的代码工作如下:
发布此消息后,我可以看到数据按预期插入到表中。
zaqlnxep2#
您需要将对存储过程的调用嵌入到另一个存储过程中,并在那里调用insert语句。不幸的是,Redshift在存储过程和(甚至更多)存储函数方面确实受到限制。