3

我有一个包含一堆 SQL 脚本的项目,我正在将该项目迁移到Sequel中。

在旧脚本中,我定义了相当多的 SQL 函数来构建我的查询。我应该如何创建这些函数以便我可以从 Sequel 访问它们?

例如我有一个 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 查询的查询。

谢谢!

4

2 回答 2

4

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

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

但是,我很遗憾添加此内容,并且可能会在下一个主要版本中将其移至扩展中。像DB.run这样用于数据库特定的东西是去 IMO 的方式。

于 2012-12-11T15:56:58.690 回答
-1

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

https://github.com/sufleR/sql_query

于 2015-08-31T18:44:42.340 回答