【发布时间】:2013-12-10 16:03:35
【问题描述】:
这有点奇怪,谁能帮我指出这个函数可能出错的地方。 我有一个类似于
的功能CREATE FUNCTION check_password(uname TEXT, pass TEXT)
RETURNS BOOLEAN AS $$
DECLARE passed BOOLEAN;
BEGIN
SELECT (pwd = $2) INTO passed
FROM pwds
WHERE username = $1;
RETURN passed;
END;
$$ LANGUAGE plpgsql
当我直接在 pgAdmin sql 控制台中运行它时,没有错误,但使用 db-migration-maven-plugin 在迁移脚本中运行它时出现错误。
Error executing: CREATE FUNCTION check_password(uname TEXT, pass TEXT)
RETURNS BOOLEAN AS $$ DECLARE passed BOOLEAN
org.postgresql.util.PSQLException: ERROR: unterminated dollar-quoted
string at or near "$$ DECLARE passed BOOLEAN"
Position: 74
【问题讨论】:
-
对不起,现在遇到同样的问题。你找到解决方法了吗?
-
我避免一起编写长函数。这是迁移软件(碳五)的问题。我想对其进行一些更改,因为它是开源的,但没有时间。
-
我在使用使用 Redshift JDBC 驱动程序的 Aqua Data Studio 时收到了类似的错误消息。就我而言,解决方法是转到“选项”并取消勾选';语句分隔符'。解析器似乎假设第一个分号是整个函数定义的结尾,它还没有看到结束 $$ 。当未选中该框时,您的示例函数在我的系统(9.5 版)上创建时没有错误。用';声明分隔符'打勾,我得到了同样的错误。希望对您有所帮助。
标签: java postgresql maven-3 database-migration