【发布时间】:2017-03-16 12:35:33
【问题描述】:
我创建了一个返回
的函数text[]
按原样工作
CREATE OR REPLACE FUNCTION another_function_array()
RETURNS text[] AS $$
SELECT array_agg(column_name::text)
FROM information_schema.columns
WHERE table_schema = 'abc' AND table_name = 'xyz'
$$
LANGUAGE SQL;
现在我想在另一个函数中使用该函数:
CREATE OR REPLACE FUNCTION get_array()
RETURNS VOID AS $$
DECLARE
arr text[] := another_function_array()
$$ LANGUAGE plpgsql;
它给了我输出
错误:错误:输入末尾的语法错误 职位:107 SQL 状态:42601 错误代码:0
好吧
;
在结尾
arr text[] := another_function_array()
is missing 是我的第一个猜测,但是当我添加它时,我得到了错误
java.lang.ArrayIndexOutOfBoundsException 错误发生在: 创建或替换函数 get_array() 返回无效为 $$ 宣布 arr text[] := another_function_array()
现在我有点困惑,因为我必须在这里遗漏一些基本的东西
【问题讨论】:
-
声明后的代码在哪里?身体的其他部分?
-
我有一个 BEGIN 和 END 以及介于两者之间的东西,但没关系导致错误保持不变,所以我离开了它
-
是的,semicolon is needed,似乎无论您使用什么工具运行此查询,它都会将您的查询拆分为多个分号查询(如果您的错误消息完整,至少会发生这种情况,而不仅仅是更大错误消息的截断样本)。
-
@pozs 谢谢,这就是解决方案,我在那里使用 SQUIRREL 出现错误,当我在 PgAdmin 中复制/粘贴我的函数时它可以工作,你想写一个答案吗?
-
@aldr 好吧,您的问题并没有因此而消失,是吗? :) 你可以重新表述你的问题,标记 SQUIRREL 并询问如何解决这个问题,因为我对 SQUIRREL 不太熟悉。
标签: postgresql plpgsql squirrel-sql