bra*_*ahn 4 ruby sql function sequel
我有一个包含大量 SQL 脚本的项目,我正在将该项目迁移到Sequel中。
在旧脚本中,我定义了大量 SQL 函数来构建查询。我应该如何创建这些函数以便我可以从 Sequel 访问它们?
例如我有一个 SQL 函数
CREATE FUNCTION my_func(...) RETURNS integer AS $$
SELECT ...
$$ LANGUAGE SQL;
Run Code Online (Sandbox Code Playgroud)
我应该将上面的文本放在一个字符串中并调用以下内容吗?
DB.run("CREATE FUNCTION my_func(...) RETURNS integer AS $$
SELECT ...
$$ LANGUAGE SQL;")
Run Code Online (Sandbox Code Playgroud)
看来可能还有更好的办法。
我可以使用 Sequel 将函数本身重写为 ruby 函数,但我不相信这会实现我想要的,因为我想要运行在WHERE子句等中使用 SQL 查询的查询。
谢谢!
Sequel 实际上支持创建 PostgreSQL 函数:
DB.create_function('myfunc', 'SELECT ...', :args=>[:integer, :text], :returns=>:integer)
Run Code Online (Sandbox Code Playgroud)
但是,我很遗憾添加了此内容,并且可能会将其移至下一个主要版本中的扩展。在我看来,使用DB.run像这样的数据库特定的东西是正确的方法。