(#.+oci-error+
(handle-oci-error :database database :nulls-ok nulls-ok))
(#.+oci-no-data+
- (error "OCI No Data Found"))
+ (error 'sql-database-error :message "OCI No Data Found"))
(#.+oci-success-with-info+
- (error "internal error: unexpected +oci-SUCCESS-WITH-INFO"))
+ (error 'sql-database-error :message "internal error: unexpected +oci-success-with-info"))
(#.+oci-no-data+
- (error "OCI No Data"))
+ (error 'sql-database-error :message "OCI No Data"))
(#.+oci-invalid-handle+
- (error "OCI Invalid Handle"))
+ (error 'sql-database-error :message "OCI Invalid Handle"))
(#.+oci-need-data+
- (error "OCI Need Data"))
+ (error 'sql-database-error :message "OCI Need Data"))
(#.+oci-still-executing+
- (error "OCI Still Executing"))
+ (error 'sql-temporary-error :message "OCI Still Executing"))
(#.+oci-continue+
- (error "OCI Continue"))
+ (error 'sql-database-error :message "OCI Continue"))
(1804
- (error "Check ORACLE_HOME and NLS settings."))
+ (error 'sql-database-error :message "Check ORACLE_HOME and NLS settings."))
(t
- (error "OCI unknown error, code=~A" result))))))))
+ (error 'sql-database-error
+ :message
+ (format nil "OCI unknown error, code=~A" result)))))))))
(defmacro def-raw-oci-routine
(defun oci-check-return (value)
(when (= value +oci-invalid-handle+)
- (error "Invalid Handle")))
+ (error 'sql-database-error :message "Invalid Handle")))
(defun oci-get-handle (&key type)
(if (null *oci-initialized*)
(:security
"OCISecurity")
(t
- (error "'~s' is not a valid OCI handle type" type))))
+ (error 'sql-database-error
+ :message
+ (format nil "'~s' is not a valid OCI handle type" type)))))
(defun oci-environment ()
(let ((envhp (oci-get-handle :type :env)))
(defun osucc (code)
(declare (type fixnum code))
(unless (= code +oci-success+)
- (error 'dbi-error
- :format-control "unexpected OCI failure, code=~S"
- :format-arguments (list code))))
+ (error 'sql-database-error
+ :message (format nil "unexpected OCI failure, code=~S" code))))
;;; Enabling this can be handy for low-level debugging.
(second (1- (ub 6))))
(encode-universal-time second minute hour day month year))))
+(defun owner-phrase (owner)
+ (if owner
+ (format nil " WHERE OWNER='~A'" owner)
+ ""))
+
(defmethod database-list-tables ((database oracle-database) &key owner)
(mapcar #'car
- (database-query "select table_name from user_tables"
- database nil nil))
+ (database-query
+ (concatenate 'string "select table_name from user_tables"
+ (owner-phrase owner))
+ database nil nil))
#+nil
(values (database-query "select TABLE_NAME from all_catalog
where owner not in ('PUBLIC','SYSTEM','SYS','WMSYS','EXFSYS','CTXSYS','WKSYS','WK_TEST','MDSYS','DMSYS','OLAPSYS','ORDSYS','XDB')"
(defmethod database-list-views ((database oracle-database)
&key owner)
- ;; (database-query "select table_name from all_catalog" database nil nil)
(mapcar #'car
- (database-query "select view_name from user_views" database nil nil)))
+ (database-query
+ (concatenate 'string "select view_name from user_views"
+ (owner-phrase owner))
+ database nil nil)))
(defmethod database-list-indexes ((database oracle-database)
&key (owner nil))
(mapcar #'car
- (database-query "select index_name from user_indexes" database nil nil)))
+ (database-query
+ (concatenate 'string "select index_name from user_indexes"
+ (owner-phrase owner))
+ database nil nil)))
(defmethod list-all-table-columns (table (db oracle-database))
(declare (string table))
(mapcar #'car
(database-query
(format nil
- "select column_name from user_tab_columns where table_name='~A'"
- table)
+ "select column_name from user_tab_columns where table_name='~A'~A"
+ table
+ (if owner
+ (format nil " AND OWNER='~A'" owner)
+ ""))
database nil nil)))
(defmethod database-attribute-type (attribute (table string)
(let ((rows
(database-query
(format nil
- "select data_type,data_length,data_precision,data_scale,nullable from user_tab_columns where table_name='~A' and column_name='~A'"
- table attribute)
+ "select data_type,data_length,data_precision,data_scale,nullable from user_tab_columns where table_name='~A' and column_name='~A'~A"
+ table attribute
+ (if owner
+ (format nil " AND OWNER='~A'" owner)
+ ""))
database :auto nil)))
(destructuring-bind (type length precision scale nullable) (car rows)
(values (ensure-keyword type) length precision scale
(defstruct (oracle-result-set (:print-function print-query-cursor)
(:conc-name qc-)
(:constructor %make-query-cursor))
- (db (error "missing DB") ; db conn. this table is associated with
+ (db (error "missing DB") ; db conn. this table is associated with
:type oracle-database
:read-only t)
(stmthp (error "missing STMTHP") ; the statement handle used to create
;;(declare (optimize (speed 3)))
(cond ((zerop (qc-n-from-oci qc))
(if eof-errorp
- (error 'clsql-error :message
+ (error 'sql-database-error :message
(format nil "no more rows available in ~S" qc))
eof-value))
((>= (qc-n-to-dbi qc)
) :database database)))
(defmethod database-list-sequences ((database oracle-database) &key owner)
- (mapcar #'car (database-query "select sequence_name from user_sequences"
- database nil nil)))
+ (mapcar #'car (database-query
+ (concatenate 'string "select sequence_name from user_sequences"
+ (owner-phrase owner))
+ database nil nil)))
(defmethod database-execute-command (sql-expression (database oracle-database))
(database-query sql-expression database nil nil)
Package: cl-sql-tests
Architecture: all
-Depends: cl-sql, cl-sql-postgresql, cl-sql-postgresql-socket, cl-sql-mysql, cl-sql-sqlite, cl-sql-odbc, rt
+Depends: cl-sql, cl-sql-postgresql, cl-sql-postgresql-socket, cl-sql-mysql, cl-sql-sqlite, cl-sql-odbc, cl-rt
Suggests: acl-installer, libmyodbc, unixodbc,cl-sql-aodbc
Description: Testing suite for CLSQL
This package contains a test suite for CLSQL. It requires manual