Как запустить процедуру Oracle plsql из Lisp?
-
09-06-2019 - |
Вопрос
Как мне начать?
Решение
Я нашел самый простой способ добиться этого с помощью Clojure.Вот пример кода:
(ns example
(:require [clojure.contrib.sql :as sql])
(:import [java.sql Types]))
(def devdb {: classname "oracle.jdbc.driver.oracledriver": subprotocol "Oracle": sub -sub -sepname "thin: username/password@localhost: 1509: devdb": create true})
(DEFN EXEC-ORESTORED-PROC [CALLBACK DB Input-PARAM] (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 типы/Integer) (.registeroutparameter 3 oracle.jdbc.driver.oracletypes/cursor) (.execute)) (обратный вызов (.stmt getInt 2) (.stmt getObject 3)))))
(exec-ora-proc 123 ;; vint param value devdb (fn [err-code res-cursor] (println (str "ret_code:"Err-Code)) ;;Отпечатки возвращаемых строк рефсорра (let [Resultset (ResultSet-seq Res-Cursor)] (DOSEQ [REC RESSUTET] (Println Rec))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
Другие советы
Вам понадобится интерфейс к базе данных Oracle SQL.Как отметил Боб, у Allegro CL есть такой интерфейс.
Самый простой способ выполнять задачи Oracle из вашей программы Common Lisp — использовать CLSQL.Существует множество других пакетов для работы с базами данных из Common Lisp.Посмотри на Страница базы данных Cliki