【问题标题】:SQUIRREL: assigning return value from a function to a variable [duplicate]SQUIRREL:将函数的返回值分配给变量[重复]
【发布时间】: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


【解决方案1】:

分配的问题是,SQUIRREL 正在寻找分隔符 这是

;

可以找到解决该问题的方法here

【讨论】:

    猜你喜欢
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 2020-12-09
    相关资源
    最近更新 更多