- Timestamp:
- 11/28/2007 03:52:35 AM (19 years ago)
- branch-nick:
- 64-bit
- revision id:
- dsowen@tux-20071128035235-mieddjyp9gu0ifr4
- File:
-
- 1 edited
-
64-bit/src/odbc/parameter.lisp (modified) (18 diffs)
Legend:
- Unmodified
- Added
- Removed
-
64-bit/src/odbc/parameter.lisp
r4 r7 54 54 param))) 55 55 56 ;;;; dso: not so sure about this one and its callers57 56 (defun bind-parameter (hstmt pos param) 58 57 (setf (slot-value param 'ind-ptr) … … 97 96 ()) 98 97 99 ;; dso+100 98 (defmethod initialize-parameter ((param string-parameter) args) 101 99 (let ((length-of-buffer (or (car args) *default-string-parameter-size*))) … … 109 107 (setf value-ptr (alloc-chars length-of-buffer))))) 110 108 111 ;; dso+112 109 (defmethod set-parameter-value ((param string-parameter) value) 113 110 (cond … … 123 120 (length value))))) 124 121 125 ;; dso+126 122 (defmethod get-parameter-value ((param string-parameter)) 127 123 (let ((len (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len))) … … 137 133 ()) 138 134 139 ;; dso+140 135 (defmethod initialize-parameter ((param unicode-string-parameter) args) 141 136 (let ((length-of-buffer … … 150 145 (setf value-ptr (cffi:foreign-alloc :uint8 :count length-of-buffer))))) 151 146 152 ;; dso+153 147 (defmethod set-parameter-value ((param unicode-string-parameter) value) 154 148 (cond … … 163 157 (* 2 (length value)))))) 164 158 165 ;; dso+166 159 (defmethod get-parameter-value ((param unicode-string-parameter)) 167 160 (let ((len (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len))) … … 178 171 ()) 179 172 180 ;; dso+181 173 (defmethod initialize-parameter ((param integer-parameter) args) 182 174 (assert (not args)) … … 185 177 (setf value-type $SQL_C_LONG) 186 178 (setf parameter-type $SQL_INTEGER) 187 (setf buffer-length 4)179 (setf buffer-length (cffi:foreign-type-size 'sql-integer)) 188 180 (setf value-ptr (cffi:foreign-alloc 'sql-integer)))) 189 181 … … 212 204 ()) 213 205 214 ;; dso+215 206 (defmethod initialize-parameter ((param double-parameter) args) 216 207 (assert (not args)) … … 219 210 (setf value-type $SQL_C_DOUBLE) 220 211 (setf parameter-type $SQL_DOUBLE) 221 (setf buffer-length 8)212 (setf buffer-length (cffi:foreign-type-size :double)) 222 213 (setf value-ptr (cffi:foreign-alloc :double)))) 223 214 224 ;; dso+225 215 (defmethod set-parameter-value ((param double-parameter) value) 226 216 (cond … … 231 221 (setf (cffi:mem-ref (slot-value param 'value-ptr) :double) 232 222 (coerce value 'double-float)) 233 (setf (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len) 8))))234 235 ;; dso+ 223 (setf (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len) 224 (cffi:foreign-type-size :double))))) 225 236 226 (defmethod get-parameter-value ((param double-parameter)) 237 227 (if (= (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len) $SQL_NULL_DATA) … … 256 246 (setf value-ptr (cffi:foreign-alloc :uchar :count 24)))) 257 247 258 ;; dso+259 248 (defmethod set-parameter-value ((param date-parameter) value) 260 249 (if (null value) … … 269 258 (%put-sql-c-timestamp (slot-value param 'value-ptr) year month day hour min sec 0))))) 270 259 271 ;; dso+272 260 (defmethod get-parameter-value ((param date-parameter)) 273 261 (let ((len (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len))) … … 295 283 296 284 (defmethod set-parameter-value ((param binary-parameter) value) 297 (if (null value)298 (setf (cffi:mem-ref (slot-value param 'ind-ptr) :long)299 $SQL_NULL_DATA)300 (if (< (slot-value param 'buffer-length) (length value))301 (progn302 (error "buffer is to small")303 ; we could increase the buffer size with another bind parameter304 ;or set data_at_execution =1305 )306 (progn307 ;(break)308 (setf (cffi:mem-ref (slot-value param 'ind-ptr) :long)309 (length value))310 (put-byte-vector (slot-value param 'value-ptr) value)))))285 (if (null value) 286 (setf (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len) 287 $SQL_NULL_DATA) 288 (if (< (slot-value param 'buffer-length) (length value)) 289 (progn 290 (error "buffer is to small") 291 ;; we could increase the buffer size with another bind 292 ;; parameter or set data_at_execution =1 293 ) 294 (progn 295 ;; (break) 296 (setf (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len) 297 (length value)) 298 (put-byte-vector (slot-value param 'value-ptr) value))))) 311 299 312 300 313 301 (defmethod get-parameter-value ((param binary-parameter)) 314 (let ((len (cffi:mem-ref (slot-value param 'ind-ptr) :long)))302 (let ((len (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len))) 315 303 (if (= len $SQL_NULL_DATA) 316 nil317 (get-byte-vector (slot-value param 'value-ptr) len))))304 nil 305 (get-byte-vector (slot-value param 'value-ptr) len)))) 318 306 319 307 … … 338 326 ;; the value-ptr will be needed to find the parameter, 339 327 ;; we store the position there 340 (setf buffer-length 4)341 (setf value-ptr (cffi:foreign-alloc 'sql- len))))328 (setf buffer-length (cffi:foreign-type-size 'sql-pointer)) 329 (setf value-ptr (cffi:foreign-alloc 'sql-pointer)))) 342 330 343 331 (defmethod set-parameter-value ((param clob-parameter) value) 344 332 (if (null value) 345 (setf (cffi:mem-ref (slot-value param 'ind-ptr) :long)333 (setf (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len) 346 334 $SQL_NULL_DATA) 347 (progn348 (setf (slot-value param 'temp-val) value)349 (setf (cffi:mem-ref (slot-value param 'value-ptr) :long)350 (slot-value param 'position))351 (setf (cffi:mem-ref (slot-value param 'ind-ptr) :long)335 (progn 336 (setf (slot-value param 'temp-val) value) 337 (setf (cffi:mem-ref (slot-value param 'value-ptr) 'sql-pointer) 338 (slot-value param 'position)) 339 (setf (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len) 352 340 (%sql-len-data-at-exec (length value)))))) 353 341 … … 388 376 ;; the value-ptr will be needed to find the parameter, 389 377 ;; we store the position there 390 (setf buffer-length 4)391 (setf value-ptr (cffi:foreign-alloc 'sql- len))))378 (setf buffer-length (cffi:foreign-type-size 'sql-pointer)) 379 (setf value-ptr (cffi:foreign-alloc 'sql-pointer)))) 392 380 393 381 (defmethod set-parameter-value ((param uclob-parameter) value) 394 382 (if (null value) 395 (setf (cffi:mem-ref (slot-value param 'ind-ptr) :long)383 (setf (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len) 396 384 $SQL_NULL_DATA) 397 385 (progn 398 386 (setf (slot-value param 'temp-val) value) 399 (setf (cffi:mem-ref (slot-value param 'value-ptr) :long)387 (setf (cffi:mem-ref (slot-value param 'value-ptr) 'sql-pointer) 400 388 (slot-value param 'position)) 401 (setf (cffi:mem-ref (slot-value param 'ind-ptr) :long)389 (setf (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len) 402 390 (%sql-len-data-at-exec (* 2 (length value))))))) 403 391 … … 437 425 ;; the value-ptr will be needed to find the parameter, 438 426 ;; we store the position there 439 (setf buffer-length 4)440 (setf value-ptr (cffi:foreign-alloc 'sql- len))))427 (setf buffer-length (cffi:foreign-type-size 'sql-pointer)) 428 (setf value-ptr (cffi:foreign-alloc 'sql-pointer)))) 441 429 442 430 (defmethod set-parameter-value ((param blob-parameter) value) 443 431 (if (null value) 444 (setf (cffi:mem-ref (slot-value param 'ind-ptr) :long)432 (setf (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len) 445 433 $SQL_NULL_DATA) 446 434 (progn 447 435 (setf (slot-value param 'temp-val) value) 448 (setf (cffi:mem-ref (slot-value param 'value-ptr) :long)436 (setf (cffi:mem-ref (slot-value param 'value-ptr) 'sql-pointer) 449 437 (slot-value param 'position)) 450 (setf (cffi:mem-ref (slot-value param 'ind-ptr) :long)438 (setf (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len) 451 439 (%sql-len-data-at-exec (length value)))))) 452 440
Note: See TracChangeset
for help on using the changeset viewer.
