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