r10077: * multiple: Apply patch from Joerg Hoehle with multiple
[clsql.git] / db-oracle / oracle-api.lisp
index 1ac8ea81245161e45de37f54dd66eeac7f12ad5c..1e21b81b9d0a5849fd7ceb28fed89644fce4b85b 100644 (file)
             (#.+oci-error+
              (handle-oci-error :database database :nulls-ok nulls-ok))
             (#.+oci-no-data+
-             (error "OCI No Data Found"))
+             (error 'sql-database-error :message "OCI No Data Found"))
             (#.+oci-success-with-info+
-             (error "internal error: unexpected +oci-SUCCESS-WITH-INFO"))
-            (#.+oci-no-data+
-             (error "OCI No Data"))
+             (error 'sql-database-error :message "internal error: unexpected +oci-success-with-info"))
             (#.+oci-invalid-handle+
-             (error "OCI Invalid Handle"))
+             (error 'sql-database-error :message "OCI Invalid Handle"))
             (#.+oci-need-data+
-             (error "OCI Need Data"))
+             (error 'sql-database-error :message "OCI Need Data"))
             (#.+oci-still-executing+
-             (error "OCI Still Executing"))
+             (error 'sql-temporary-error :message "OCI Still Executing"))
             (#.+oci-continue+
-             (error "OCI Continue"))
+             (error 'sql-database-error :message "OCI Continue"))
             (1804
-             (error "Check ORACLE_HOME and NLS settings."))
+             (error 'sql-database-error :message "Check ORACLE_HOME and NLS settings."))
             (t
-             (error "OCI unknown error, code=~A" result))))))))
+             (error 'sql-database-error
+                    :message
+                    (format nil "OCI unknown error, code=~A" result)))))))))
   
 
 (defmacro def-raw-oci-routine
   (xtramem-sz :unsigned-long)            ; size_t
   (usermempp (* :pointer-void)))                    ; dvoid **
   
-#+oci-8-1-5
+#-oci7
 (def-oci-routine ("OCIEnvCreate" oci-env-create)
     :int
-  (p0 :pointer-void)
-  (p1 :unsigned-int)
-  (p2 :pointer-void)
-  (p3 :pointer-void)
-  (p4 :pointer-void)
-  (p5 :pointer-void)
-  (p6 :unsigned-long)
-  (p7 :pointer-void))
+  (envhpp (* :pointer-void))
+  (mode :unsigned-int)
+  (ctxp :pointer-void)
+  (malocfp :pointer-void)
+  (ralocfp :pointer-void)
+  (mfreefp :pointer-void)
+  (xtramemsz :unsigned-long)
+  (usrmempp (* :pointer-void)))
 
 (def-oci-routine ("OCIHandleAlloc" oci-handle-alloc)
     :int
   (valuep      :pointer-void)
   (value_sz      :long)
   (dty      :unsigned-short)         
-  (indp      :pointer-void)
+  (indp      (* :short))
   (rlenp      (* :unsigned-short))          
   (rcodep      (* :unsigned-short))          
   (mode     :unsigned-long))
 
 (defun oci-check-return (value)
   (when (= value +oci-invalid-handle+)
-    (error "Invalid Handle")))
+    (error 'sql-database-error :message "Invalid Handle")))
 
 (defun oci-get-handle (&key type)
   (if (null *oci-initialized*)
     (:security
      "OCISecurity")
     (t
-     (error "'~s' is not a valid OCI handle type" type))))
+     (error 'sql-database-error
+           :message
+           (format nil "'~s' is not a valid OCI handle type" type)))))
 
 (defun oci-environment ()
   (let ((envhp (oci-get-handle :type :env)))