X-Git-Url: http://git.kpe.io/?p=clsql.git;a=blobdiff_plain;f=db-oracle%2Foracle-sql.lisp;h=aa7c6d79e0ad70f3b604a57356b47c8144e46839;hp=6a6aa3f4f5ba0ca6c88a93d00ebbf975d3426b3e;hb=6b34e2293a52b03e8611c85e4e53a0ab5c8a3c1a;hpb=e105d1c4963b50edb966b2a3049bbe02ecdfabff diff --git a/db-oracle/oracle-sql.lisp b/db-oracle/oracle-sql.lisp index 6a6aa3f..aa7c6d7 100644 --- a/db-oracle/oracle-sql.lisp +++ b/db-oracle/oracle-sql.lisp @@ -99,7 +99,7 @@ likely that we'll have to worry about the CMUCL limit.")) (date-format :initarg :date-format :reader date-format - :initform "YYYY-MM-DD HH24:MI:SS\"+00\"") + :initform "YYYY-MM-DD HH24:MI:SS\".0\"") (date-format-length :type number :documentation @@ -154,8 +154,8 @@ the length of that format.") (cond (database (with-slots (errhp) database - (uffi:with-foreign-objects ((errcode 'sb4) - (errbuf '(:array :unsigned-char #.+errbuf-len+))) + (let ((errcode (uffi:allocate-foreign-object 'sb4)) + (errbuf (uffi:allocate-foreign-string #.+errbuf-len+))) ;; ensure errbuf empty string (setf (uffi:deref-array errbuf '(:array :unsigned-char) 0) (uffi:ensure-char-storable (code-char 0))) @@ -169,6 +169,8 @@ the length of that format.") +errbuf-len+ +oci-htype-error+)) (let ((subcode (uffi:deref-pointer errcode 'sb4)) (errstr (uffi:convert-from-foreign-string errbuf))) + (uffi:free-foreign-object errcode) + (uffi:free-foreign-object errbuf) (unless (and nulls-ok (= subcode +null-value-returned+)) (error 'sql-database-error :database database @@ -501,7 +503,7 @@ the length of that format.") (uffi:with-foreign-strings ((c-stmt-string sql-stmt-string)) (let ((stmthp (uffi:allocate-foreign-object :pointer-void)) select-p) - + (uffi:with-foreign-object (stmttype :unsigned-short) (unwind-protect (progn @@ -520,10 +522,10 @@ the length of that format.") +oci-attr-stmt-type+ (deref-vp errhp) :database db) - + (setq select-p (= (uffi:deref-pointer stmttype :unsigned-short) 1)) (let ((iters (if select-p 0 1))) - + (oci-stmt-execute (deref-vp svchp) (deref-vp stmthp) (deref-vp errhp) @@ -533,7 +535,7 @@ the length of that format.") (unless select-p (oci-handle-free (deref-vp stmthp) +oci-htype-stmt+) (uffi:free-foreign-object stmthp)))) - + (cond (select-p (make-query-cursor db stmthp result-types field-names))