【问题标题】:Database Function giving an error - Postgresql数据库函数给出错误 - Postgresql
【发布时间】:2013-01-20 14:10:33
【问题描述】:

我在这里得到了一些帮助,得到了以下代码:

-- Setup Solrid Function
CREATE OR REPLACE FUNCTION solrid(IN local_id INTEGER, OUT result TEXT) AS $$
DECLARE
  database_id TEXT := 'A';
BEGIN
  result := database_id || local_id::TEXT;
END;
$$ LANGUAGE PLPGSQL;

但是,当我在 sqlfiddle 中运行它时,它会说:

架构创建失败:错误:未终止的美元引号字符串位于或 “$$ DECLARE database_id TEXT := 'A'”附近:

这个错误似乎很容易解释,但我不知道如何解决它。有人介意对此有所了解吗?

【问题讨论】:

  • 有趣,在我的本地数据库(postgresql 9.1)上工作得很好
  • 可能是 sqlfiddle 的错误?我已经尝试了几个不同的版本,每次都会抛出相同的错误。
  • 首先提供您使用的版本号以及如何执行代码。
  • 对不起 Jimmy,这是 SQL Fiddle 中令人困惑的部分。问题是函数体中的分号破坏了我的默认解析机制。如果您将“查询终止符”更改为分号以外的其他内容(默认),您的函数将正常工作:sqlfiddle.com/#!1/ede11

标签: database postgresql debian


【解决方案1】:

这个功能绝对没有问题,它是 100% 合法的。我在安装中使用 8.4 和 9.1 进行了测试。

一定是有什么误会。这不能与触发错误消息的代码完全相同。

【讨论】:

  • 如果您取消注释底部的函数并构建架构,则会出现错误。根据您所说,我认为这是网站的错误:sqlfiddle.com/#!11/6810d
  • @ErwinBrandstetter 实际上,SQL Fiddle 确实支持函数。您只需将“查询终止符”更改为分号以外的内容。 sqlfiddle.com/#!1/ede11
  • @JakeFeasel:太棒了!我不知道。删除了我不正确的评论。当然,如果查询终止符也能以某种方式修复,那就太好了。
  • @ErwinBrandstetter 是的,这是我长期以来一直在思考如何提高其知名度的一个功能。显然是 UX 失败。我有一些关于如何改进它的想法,希望能尽快尝试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-20
  • 2015-12-16
  • 2020-06-12
  • 2015-07-12
  • 2019-01-08
  • 2015-04-28
  • 1970-01-01
相关资源
最近更新 更多