使用 refcursor 参数调用 Redshift 存储过程时出错

问题描述 投票:0回答:1

我正在尝试从 Redshift 存储过程中获取 DataGrip 控制台中的结果集。这是我的存储过程主体

CREATE OR REPLACE PROCEDURE test_schema.get_redshift_table_ddl(
    p_schema_name IN VARCHAR,
    p_table_name IN VARCHAR,
    rs_out INOUT refcursor
)
AS $$
DECLARE
    v_query TEXT;
BEGIN

    OPEN rs_out FOR SELECT * FROM test_schema.test_table LIMIT 5;
END;
$$
LANGUAGE plpgsql
;

我在控制台中调用存储过程,如下所示:

BEGIN;
CALL test_schema.get_redshift_table_ddl('test_schema','test_other_table','rs_out');
FETCH ALL FROM rs_out;
END;

这是我正在关注的AWS参考:https://docs.aws.amazon.com/redshift/latest/dg/stored-procedure-result-set.html

错误 当我调用存储过程时,出现以下错误

ERROR: function format(character varying, character varying, character varying) does not exist Hint: No function matches the given name and argument types. You may need to add explicit type casts. Where: SQL statement "SELECT FORMAT( $1 , $2 , $3 )"

问题

如何在从控制台调用存储过程时传递引用游标名称?

stored-procedures amazon-redshift plpgsql ref-cursor
1个回答
0
投票

您应该使用某个函数

format
,Redshift 不支持该函数。函数
format
在 PostgreSQL 9.3 中实现。 Amazon Redshift 基于某些 8.x Postgres。

© www.soinside.com 2019 - 2024. All rights reserved.