Re: ORA-01000: maximum open cursors exceeded

Kevin Rosenberg <kevin-HJRc7zDS/[email protected]> Thu, 8 Sep 2005 09:03:43 -0600
Newsgroups gmane.lisp.clsql.devel
Message-ID <[email protected]>
Edi Weitz wrote:
> I had to apply the attached patch to make it compile but other than
> that it seems to work fine and the problems I reported are gone.

Thanks for the correction and the testing.

> Once again - thanks for the quick fix!

It's a pleasure working with you.

Kevin


> diff -ru /tmp/clsql-3.2.2-orig/db-oracle/oracle-sql.lisp clsql-3.2.2/db-oracle/oracle-sql.lisp
> --- /tmp/clsql-3.2.2-orig/db-oracle/oracle-sql.lisp	2005-09-08 08:10:42.000000000 +0200
> +++ clsql-3.2.2/db-oracle/oracle-sql.lisp	2005-09-08 16:39:43.121126400 +0200
> @@ -129,7 +129,7 @@
>    (cond
>      (database
>       (with-slots (errhp) database
> -       (let ((errcode (uffi:allocate-foreign-string :long))
> +       (let ((errcode (uffi:allocate-foreign-object :long))
>  	     (errbuf (uffi:allocate-foreign-string #.+errbuf-len+)))
>  	 ;; ensure errbuf empty string
>  	 (setf (uffi:deref-array errbuf '(:array :unsigned-char) 0)
> @@ -469,35 +469,36 @@
>  
>  (defun sql-stmt-exec (sql-stmt-string db result-types field-names)
>    (with-slots (envhp svchp errhp) db
> -    (let ((stmthp (uffi:allocate-foreign-object :pointer-void)))
> +    (let ((stmthp (uffi:allocate-foreign-object :pointer-void))
> +          select-p)
> +      
>        (uffi:with-foreign-object (stmttype :unsigned-short)
> -
>  	(unwind-protect
> -	     (progn
> -	       (oci-handle-alloc (deref-vp envhp)
> -				 stmthp
> -				 +oci-htype-stmt+ 0 +null-void-pointer-pointer+)
> -	       (oci-stmt-prepare (deref-vp stmthp)
> -				 (deref-vp errhp)
> -				 (uffi:convert-to-cstring sql-stmt-string)
> -				 (length sql-stmt-string)
> -				 +oci-ntv-syntax+ +oci-default+ :database db)
> -	       (oci-attr-get (deref-vp stmthp)
> -			     +oci-htype-stmt+
> -			     stmttype
> -			     +unsigned-int-null-pointer+
> -			     +oci-attr-stmt-type+
> -			     (deref-vp errhp)
> -			     :database db)
> -
> -	       (let* ((select-p (= (uffi:deref-pointer stmttype :unsigned-short) 1))
> -		      (iters (if select-p 0 1)))
> -
> -		 (oci-stmt-execute (deref-vp svchp)
> -				   (deref-vp stmthp)
> -				   (deref-vp errhp)
> -				   iters 0 +null-void-pointer+ +null-void-pointer+ +oci-default+
> -				   :database db)))
> +            (progn
> +              (oci-handle-alloc (deref-vp envhp)
> +                                stmthp
> +                                +oci-htype-stmt+ 0 +null-void-pointer-pointer+)
> +              (oci-stmt-prepare (deref-vp stmthp)
> +                                (deref-vp errhp)
> +                                (uffi:convert-to-cstring sql-stmt-string)
> +                                (length sql-stmt-string)
> +                                +oci-ntv-syntax+ +oci-default+ :database db)
> +              (oci-attr-get (deref-vp stmthp)
> +                            +oci-htype-stmt+
> +                            stmttype
> +                            +unsigned-int-null-pointer+
> +                            +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)
> +                                  iters 0 +null-void-pointer+ +null-void-pointer+ +oci-default+
> +                                  :database db)))
>  	  ;; free resources unless a query
>  	  (unless select-p
>  	    (oci-handle-free (deref-vp stmthp) +oci-htype-stmt+)

> _______________________________________________
> CLSQL-Devel mailing list
> [email protected]
> http://lists.b9.com/mailman/listinfo/clsql-devel

-- 
Kevin Rosenberg
kevin-HJRc7zDS/[email protected]