Wie führe ich Oracle plsql Prozedur von Lisp?
-
09-06-2019 - |
Frage
Wie fange ich an?
Lösung
Ich habe die einfachste Art und Weise fanden diese Clojure durch Verwendung zu erreichen. Hier ist der Beispielcode:
(ns example
(:require [clojure.contrib.sql :as sql])
(:import [java.sql Types]))
(def devdb {:classname "oracle.jdbc.driver.OracleDriver"
:subprotocol "oracle"
:subname "thin:username/password@localhost:1509:devdb"
:create true})
(defn exec-ora-stored-proc [input-param db callback]
(sql/with-connection db
(with-open [stmt (.prepareCall (sql/connection) "{call some_schema.some_package.test_proc(?, ?, ?)}")]
(doto stmt
(.setInt 1 input-param)
(.registerOutParameter 2 Types/INTEGER)
(.registerOutParameter 3 oracle.jdbc.driver.OracleTypes/CURSOR)
(.execute))
(callback (. stmt getInt 2) (. stmt getObject 3)))))
(exec-ora-stored-proc
123 ;;input param value
devdb
(fn [err-code res-cursor]
(println (str "ret_code: " err-code))
;; prints returned refcursor rows
(let [resultset (resultset-seq res-cursor)]
(doseq [rec resultset]
(println rec)))))
Andere Tipps
Sie werden über eine Schnittstelle zu der Oracle-SQL-Datenbank benötigen. Wie Bob wies darauf hin, Allegro CL hat eine solche Schnittstelle.
GNU CLISP kommt offenbar mit einer Schnittstelle zu der Datenbank als auch.
Die einfachste Art und Weise Oracle Sachen von Ihrem Common Lisp-Programm zu tun ist, zu verwenden, CLSQL . Es gibt viele andere Pakete für mit Datenbanken von Common Lisp Sachen zu tun. Hier finden Sie aktuelle Cliki Datenbank