[英]Use custom function with HugSQL
我在macOS 10.12.6上使用PostgreSQL版本10,并且想在查询中使用自定义的plpgsql函数,该查询应可由HugSQL访问。 以下ansatz可以正常工作:
-- :name do-something! :! :1
CREATE OR REPLACE FUNCTION helper()
... (function body of helper)
LANGUAGE plpgsql;
INSERT INTO SomeTable (someColumn) VALUES (helper());
这是可行的,因为HugSQL允许我编写多行SQL语句,并且可以包括helper()
的函数定义。
但是,我不知道这样做是否有效,因为现在我每次查询do-something!
都要重新定义函数do-something!
运行。 我试图将函数定义放在输入文件的顶部,但这仅导致编译器异常。
问题:最佳方法是什么?
我找到了解决方案。 在此是为了方便HugSQL的其他用户。
可以在设置表的迁移文件中定义此功能(我为此目的使用了migratus )。 函数定义的范围与表的范围相同,因此如果迁移读取
CREATE OR REPLACE FUNCTION helper()
... (function body of helper)
LANGUAGE plpqsql;
CREATE TABLE IF NOT EXISTS SomeTable
(...row definitions);
那么可以在上面发布的查询中使用功能helper()
,而不必在使用前(重新)定义它:
-- :name do-something! :! :1
INSERT INTO SomeTable (someColumn) VALUES (helper());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.