我有一个包含大量SQL脚本的项目,我正在将项目迁移到Sequel。
在旧脚本中,我定义了相当多的SQL函数来构建我的查询。我应该如何创建这些函数,以便我可以从续集中访问它们?
E.g。我有一个SQL函数
CREATE FUNCTION my_func(...) RETURNS integer AS $$
SELECT ...
$$ LANGUAGE SQL;
我是否应该将上述文本括在一个字符串中并调用以下内容?
DB.run("CREATE FUNCTION my_func(...) RETURNS integer AS $$
SELECT ...
$$ LANGUAGE SQL;")
似乎可能有更好的方法。
我可以使用Sequel将函数本身重写为ruby函数,但我不相信这会实现我想要的,因为我想运行在WHERE
子句中使用SQL查询的查询这样
谢谢!
答案 0 :(得分:4)
Sequel实际上支持创建PostgreSQL函数:
DB.create_function('myfunc', 'SELECT ...', :args=>[:integer, :text], :returns=>:integer)
但是,我很遗憾地添加了这个,并且可能会将它转移到下一个主要版本的扩展中。使用DB.run
来获取这样的数据库特定内容是IMO的方法。
答案 1 :(得分:-1)
正如您在问题中标记了ruby,要存储SQL调用,您可以使用这个非常有用的GEM: