如何在Sequel中创建SQL函数?

时间:2012-12-11 01:01:20

标签: sql ruby function sequel

我有一个包含大量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查询的查询这样

谢谢!

2 个答案:

答案 0 :(得分:4)

Sequel实际上支持创建PostgreSQL函数:

DB.create_function('myfunc', 'SELECT ...', :args=>[:integer, :text], :returns=>:integer)

但是,我很遗憾地添加了这个,并且可能会将它转移到下一个主要版本的扩展中。使用DB.run来获取这样的数据库特定内容是IMO的方法。

答案 1 :(得分:-1)

正如您在问题中标记了ruby,要存储SQL调用,您可以使用这个非常有用的GEM:

https://github.com/sufleR/sql_query