繁体   English   中英

在HugSQL中使用自定义函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM