簡體   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