2016-07-22 5 views
0

私はplv8エンジンを使用し、coffescriptで書かれたプロシージャをストアしたデータベースを持っています。各クエリの前に追加のSQLを呼び出す方法は?

私はjDBIを使用する場合、私は、接続を開いた後、それらのプロシージャを呼び出すために、私は実行する必要がありますするjavax.sql.DataSourceでJOOQを使用している場合

SET plv8.start_proc = 'plv8_init'; 

は、私は同じようなことを行うことができますか?

答えて

0

1つのオプションは、ExecuteListenerを使用することです。あなたはexecuteStart()メソッドを実装することで、クエリ実行のライフサイクルにフックすることができます

new DefaultExecuteListener() { 
    @Override 
    public void executeStart(ExecuteContext ctx) { 
     DSL.using(ctx.connection()).execute("SET plv8.start_proc = 'plv8_init'"); 
    } 
} 

は今、あなたのConfigurationに上記ExecuteListenerを供給すれば完了です。

も、マニュアルを参照してください: http://www.jooq.org/doc/latest/manual/sql-execution/execute-listeners

+0

おかげで、私はそれを試してみましょう。もう一つ。私がfetch( "SET plv8.start_proc = 'plv8_init'; select * from my_stored_proc())を実行すると、plv8.start_procesを追加しないのと同様に例外がスローされ、例外が発生します。言い換えれば、文を分割するような動作をします。それぞれ別々に実行します。とにかく、今日あなたの解決策を試してみます – bodziec

+0

@bodziec:あなたは[PostgreSQLの匿名コードブロック](https://www.postgresql.org/docs/9.4/static/sql-do.html)を使って、しかし、私はかなり混乱している可能性があり、クエリの結果を変更する可能性がある –

関連する問題