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;")

もっと良い方法があるようです。

WHERESequelを使用して関数自体をruby関数として書き直すことはできますが、句などで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 に答える