【发布时间】:2020-07-11 14:51:44
【问题描述】:
我使用 AWS-SCT 将架构从 oracle 迁移到 postgreSQL,包被转换为 postgreSQL 中的函数。 我需要将此函数转换为过程以与应用程序中间件中的代码进行压缩。
我尝试转换为程序,每次我遇到SQL state: 42601 和inout parameter are permitted 之类的错误
请帮助将函数转换为过程。
CREATE OR REPLACE Function "pk_audfreq$sp_audfreq"(
OUT out_a double precision,
OUT out_b double precision,
OUT out_c double precision)
RETURNS record
LANGUAGE 'plpgsql'
COST 100
VOLATILE
AS $BODY$
DECLARE
BEGIN
SELECT
MIN(audresponsetime), AVG(audresponsetime), MAX(audresponsetime)
INTO STRICT out_a, out_b, out_c
FROM public.audio_freq;
END;
$BODY$;
【问题讨论】:
-
如果你想返回一些东西,使用一个(设置返回)函数。过程并不意味着返回结果集。
-
试过了,仍然给出语法错误 SQL 状态:42601,需要帮助才能将函数更正到 PostgreSQL 中的过程而没有语法错误
-
当然你可以使用
INOUT,但是你必须提供参数。为什么要坚持对自然是函数的东西使用过程? -
以及为什么坚持使用函数或过程来编写一个最好封装在 VIEW 中的简单语句
标签: oracle postgresql stored-procedures database-migration aws-sct