2016-07-22 41 views
0

我有一個使用plv8引擎的數據庫,並且有用coffescript編寫的存儲過程。如何在每個查詢之前調用其他SQL?

當我使用jDBI,爲了調用這些程序,我打開連接後,我要運行:

SET plv8.start_proc = 'plv8_init'; 

我可以做類似的事情使用JOOQ與javax.sql.DataSource中的什麼時候?

回答

0

一種選擇是使用ExecuteListener。您可以通過實現executeStart()方法勾入查詢執行生命週期:

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

現在,提供上述ExecuteListenerConfiguration,就大功告成了。

也手動請參見: http://www.jooq.org/doc/latest/manual/sql-execution/execute-listeners

+0

謝謝,我想試試。還有一件事。當我只是做取指令(「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)來實現所需的行爲,但我懷疑這會有點侵入性,並可能改變你的查詢結果 –

相關問題