2016-07-22 4 views
0

나는 plv8 엔진을 사용하고 coffescript로 작성된 저장 프로 시저를 가지고있는 데이터베이스를 가지고있다.각 쿼리 전에 추가 SQL을 호출하는 방법은 무엇입니까?

내가 연결을 연 후에 내가 실행해야 그 프로 시저를 호출하기 위해, jDBI를 사용

SET plv8.start_proc = 'plv8_init'; 

내가 비슷한 일을 할 수는 javax.sql.DataSource로 JOOQ를 사용하는 경우?

답변

0

하나의 옵션은 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를 추가하지 않은 것처럼 throw하고 예외를 발생시킵니다. 다른 말로 표현식을 나눌 것처럼 행동합니다. 각각의 분리 된 부분을 실행하십시오. 어쨌든 오늘 해결책을 시도해 보겠습니다. – bodziec

+0

@bodziec : [PostgreSQL의 익명 코드 블록] (https://www.postgresql.org/docs/9.4/static/sql-do.html)을 사용하여 원하는 동작을 얻을 수 있습니다. 그러나 나는 그것이 꽤 약간의 개입과 쿼리의 결과 변경 가능성이 있다고 생각합니다. –