Index: 64-bit/src/odbc/odbc-functions.lisp
===================================================================
--- 64-bit/src/odbc/odbc-functions.lisp	(revision 64-bit,6)
+++ 64-bit/src/odbc/odbc-functions.lisp	(revision 64-bit,13)
@@ -261,5 +261,5 @@
 ; col-nr = :bookmark retrieves a bookmark.
 (defun %bind-column (hstmt column-nr c-type data-ptr precision out-len-ptr)
-  (declare ((integer 0) column-nr))
+  (declare (type (integer 0) column-nr))
   (with-error-handling
       (:hstmt hstmt)
@@ -272,5 +272,5 @@
                             sql-type precision scale data-ptr
                             max-value out-len-ptr)
-  (declare ((integer 0) parameter-nr))
+  (declare (type (integer 0) parameter-nr))
   (with-error-handling
       (:hstmt hstmt)
@@ -499,5 +499,5 @@
 ;; Column counting is 1-based
 (defun %describe-column (hstmt column-nr)
-  (declare ((integer 1) column-nr))
+  (declare (type (integer 1) column-nr))
   (with-temporary-allocations
       ((column-name-ptr (alloc-chars 256))
@@ -593,5 +593,5 @@
 ; column-nr is zero-based
 (defun %sql-get-data (hstmt column-nr c-type data-ptr precision out-len-ptr)
-  (declare ((integer 0) column-nr))
+  (declare (type (integer 0) column-nr))
   (with-error-handling
       (:hstmt hstmt :print-info nil)
@@ -600,5 +600,5 @@
 
 (defun %sql-get-data-raw (hstmt position c-type data-ptr buffer-length ind-ptr)
-  (declare ((integer 0) position))
+  (declare (type (integer 0) position))
   (SQLGetData hstmt (1+ position)
               c-type data-ptr buffer-length ind-ptr))
Index: 64-bit/src/odbc/odbc-utilities.lisp
===================================================================
--- 64-bit/src/odbc/odbc-utilities.lisp	(revision 64-bit,1)
+++ 64-bit/src/odbc/odbc-utilities.lisp	(revision 64-bit,2.1.1)
@@ -12,4 +12,6 @@
 (defvar *default-oracle-dsn* "default-oracle-dsn")
 (defvar *default-sql-server-dsn* "default-sql-server-dsn")
+(defvar *default-mysql-dsn* "default-mysql-dsn")
+
 
 
@@ -42,4 +44,9 @@
                      )))
 
+(defun connect-mysql (server user password)
+  (connect-generic :dsn *default-mysql-dsn*
+                   :server server :uid user :pwd password))
+
+
 (defun with-prepared-statement-fun (con string params fun)
   (let ((stm (apply #'prepare-statement con string params)))
Index: 64-bit/src/odbc/parameter.lisp
===================================================================
--- 64-bit/src/odbc/parameter.lisp	(revision 64-bit,7)
+++ 64-bit/src/odbc/parameter.lisp	(revision 64-bit,13)
@@ -293,5 +293,4 @@
             )
           (progn
-            ;; (break)
             (setf (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len)
                   (length value))
@@ -426,5 +425,6 @@
     ;; we store the position there
     (setf buffer-length (cffi:foreign-type-size 'sql-pointer))
-    (setf value-ptr (cffi:foreign-alloc 'sql-pointer))))
+    (setf value-ptr (cffi:foreign-alloc 'sql-pointer)))
+)
 
 (defmethod set-parameter-value ((param blob-parameter) value)
@@ -437,5 +437,6 @@
               (slot-value param 'position))
       (setf (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len)
-              (%sql-len-data-at-exec (length value))))))
+              (%sql-len-data-at-exec (length value)))
+      )))
 
 (defmethod send-parameter-data ((param blob-parameter) hstmt)
@@ -443,5 +444,5 @@
          (len (length temp-val))
          (buffer (cffi:foreign-alloc :uchar
-                                               :count (if (zerop len) 1 len))))
+                                     :count (if (zerop len) 1 len))))
     (put-byte-vector buffer
                  temp-val)
Index: 64-bit/src/test/test-mysql.lisp
===================================================================
--- 64-bit/src/test/test-mysql.lisp	(revision 64-bit,1)
+++ 64-bit/src/test/test-mysql.lisp	(revision 64-bit,2.1.1)
@@ -12,4 +12,5 @@
   (mysql-test4 con)
   (mysql-test5 con)
+  (mysql-test6 con)
   )
 
@@ -186,2 +187,28 @@
     (commit con)
     )
+
+
+(defun mysql-drop-test-proc (con proc)
+  (unless (zerop (caar (exec-query con (format nil 
+                                               "
+    select count(*) 
+    from information_schema.routines 
+    where routine_name ='~A'
+    and routine_schema='test'" proc))))
+    (exec-command con (format nil "drop procedure ~A" proc))))
+
+
+(defun mysql-test6 (con)
+  (mysql-drop-test-proc con "test99")
+  (exec-command con "
+CREATE PROCEDURE test99 (in p1 int, out p2 INT)
+     BEGIN
+       set p2=p1+5;
+     END;")
+  (commit con)
+  (pprint
+  (let ((stm (prepare-statement con "{call test.test99(?,?)}" 
+                                '(:integer :in) 
+                                '(:integer :out))))
+    (assert (= 6 (first (exec-prepared-command stm 1))))
+    (free-statement stm)))
Index: 64-bit/src/test/test-oracle.lisp
===================================================================
--- 64-bit/src/test/test-oracle.lisp	(revision 64-bit,1)
+++ 64-bit/src/test/test-oracle.lisp	(revision 64-bit,2.1.1)
@@ -64,7 +64,8 @@
               con "update type_test set t_blob=?,t_clob=? where id =1" 
               '(:blob :in) '(:clob :in))))
-  (exec-prepared-update stm 
-                         (make-array 10000 :element-type '(unsigned-byte 8) :initial-element 33)
-                         (make-string 100001 :initial-element #\o)))
+  (exec-prepared-update 
+   stm ;; sizes were 100000 and 100001
+   (make-array 100000 :element-type '(unsigned-byte 8) :initial-element 33)
+   (make-string 1000001 :initial-element #\o)))
   (commit con))
 
