5

この例に従って

https://github.com/clojure/java.jdbc/blob/master/doc/clojure/java/jdbc/ConnectionPooling.md

jdbc 接続プールについて、次のように Clojure アプリで SQLServer への接続プールを設定しました。

;; Database Connection Handling.
(ns myapp.db
    (:import [com.mchange.v2.c3p0 ComboPooledDataSource]))

;; ### specification
;; Defines the database connection parameters.
(def specification {
    :classname "com.microsoft.sqlserver.jdbc.SQLServerDriver"
    :subprotocol "sqlserver"
    :subname "//some;info;here"
})

;; ### pooled-data-source
;; Creates a database connection pool using the
;; <a href="https://github.com/swaldman/c3p0">c3p0</a> JDBC
;; connection pooling library.
(defn pooled-data-source [specification]
    (let [datasource (ComboPooledDataSource.)]
        (.setDriverClass datasource (:classname specification))
        (.setJdbcUrl datasource (str "jdbc:" (:subprotocol specification) ":" (:subname specification)))
        (.setUser datasource (:user specification))
        (.setPassword datasource (:password specification))
        (.setMaxIdleTimeExcessConnections datasource (* 30 60))
        (.setMaxIdleTime datasource (* 3 60 60))
        {:datasource datasource}))

;; ### connection-pool
;; Creates the connection pool when first called.
(def connection-pool
    (delay
        (pooled-data-source specification)))

;; ### connection
;; Get a connection from the connection pool.
(defn connection [] @connection-pool)

接続を使用してselect文やinsert文などを作成する方法がわかります.私の質問は、それを使用してストアドプロシージャを呼び出し、さまざまな形状やサイズのレコードである可能性のある出力を収集する方法です.

;; ### Definitions of queries.
(ns myapp.query
     (:require [myapp.db]))

;; HOW DO I CALL THIS PROC THROUGH A POOLED CONNECTION?
(defn call-the-stored-proc []
    (str "{ call someStoredProcForMyApp("...")}"))
4

1 に答える 1

3

OUT パラメータを必要としない基本的なストアド プロシージャの場合は、db-do-prepared.

(require '[clojure.java.jdbc :as j])
(j/db-do-prepared (connection) "EXEC YourStoredProc ?" [COLUMN_NAME])

これはconnection、ドキュメントが呼び出すように言っているのと同じ関数です。

完全な callable ステートメントのサポートを JDBC に追加する作業を開始しましたが、作業を完了する時間がありませんでした。それはClojue の JIRA の問題JDBC-48であり、私の進行状況は fork の sprocs ブランチにあります

于 2013-07-03T01:09:58.790 に答える