as possible second argument) to the desired representation of date/time/timestamp.")
(defvar +null-ptr+ (make-null-pointer :byte))
+(defparameter +null-handle-ptr+ (make-null-pointer :void))
(defvar *info-output* nil
"Stream to send SUCCESS_WITH_INFO messages.")
#.$SQL_MAX_MESSAGE_LENGTH msg-length)
(let ((err (convert-from-foreign-string error-message))
(state (convert-from-foreign-string sql-state)))
-
(free-foreign-object error-message)
(free-foreign-object sql-state)
(values
(#.$SQL_SUCCESS_WITH_INFO
(when ,print-info
(multiple-value-bind (error-message sql-state)
- (handle-error (or ,henv +null-ptr+)
- (or ,hdbc +null-ptr+)
- (or ,hstmt +null-ptr+))
+ (handle-error (or ,henv +null-handle-ptr+)
+ (or ,hdbc +null-handle-ptr+)
+ (or ,hstmt +null-handle-ptr+))
(when *info-output*
(format *info-output* "[ODBC info ~A] ~A state: ~A"
,result-code error-message
:odbc-message "Still executing"))
(#.$SQL_ERROR
(multiple-value-bind (error-message sql-state)
- (handle-error (or ,henv +null-ptr+)
- (or ,hdbc +null-ptr+)
- (or ,hstmt +null-ptr+))
+ (handle-error (or ,henv +null-handle-ptr+)
+ (or ,hdbc +null-handle-ptr+)
+ (or ,hstmt +null-handle-ptr+))
(error
'clsql-base-sys:clsql-odbc-error
:odbc-message error-message
data-length)))
(error "wrong type. preliminary."))
while (and (= res $SQL_SUCCESS_WITH_INFO)
- (equal (sql-state +null-ptr+ +null-ptr+ hstmt)
+ (equal (sql-state +null-handle-ptr+ +null-handle-ptr+ hstmt)
"01004"))
do (setf res (%sql-get-data hstmt column-nr c-type data-ptr
+max-precision+ out-len-ptr)))
(error "wrong type. preliminary."))
while
(and (= res $SQL_SUCCESS_WITH_INFO)
- #+ingore(eq (sql-state +null-ptr+ +null-ptr+ hstmt)
+ #+ingore(eq (sql-state +null-handle-ptr+ +null-handle-ptr+ hstmt)
$sql-data-truncated)
- (equal (sql-state +null-ptr+ +null-ptr+ hstmt)
+ (equal (sql-state +null-handle-ptr+ +null-handle-ptr+ hstmt)
"01004"))
do (setf res (%sql-get-data hstmt column-nr c-type data-ptr
+max-precision+ out-len-ptr)