Lisp에서 Oracle plsql 프로시저를 어떻게 실행합니까?
-
09-06-2019 - |
문제
어떻게 시작하나요?
해결책
저는 Clojure를 사용하여 이를 달성하는 가장 쉬운 방법을 찾았습니다.예제 코드는 다음과 같습니다.
(ns example
(:require [clojure.contrib.sql :as sql])
(:import [java.sql Types]))
(def devdb {: classname "oracle.jdbc.driver.oracledriver": 서브 프로토콜 "Oracle": 서브 이름 "Thin : username/password@localhost : 1509 : devdb": true}).
(defn exec-ora 저장 프로그램 [input-param db 콜백] (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)) (콜백 (콜백).stmt getInt 2) (.stmt getObject 3)))))
(Exec-Ora 저장 프로그램 123 ;; 입력 PARAM 값 DEVDB (fn [err-code res-cursor] (println (str "ret_code :"err-code)) ;;인쇄 된 반환 된 REFCURSOR 행
다른 팁
Oracle SQL 데이터베이스에 대한 인터페이스가 필요합니다.Bob이 지적했듯이 Allegro CL에는 이러한 인터페이스가 있습니다.
Common Lisp 프로그램에서 Oracle 작업을 수행하는 가장 간단한 방법은 다음을 사용하는 것입니다. CLSQL.Common Lisp의 데이터베이스로 작업을 수행하기 위한 다른 패키지가 많이 있습니다.보세요 Cliki의 데이터베이스 페이지