-;(defmethod database-list-tables ((db oracle-database))
-; (sql:query "select '',OWNER,TABLE_NAME,TABLE_TYPE,'' from all_catalog"))
-
-
-(defmethod list-all-user-database-tables ((db oracle-database))
- (unless db
- (setf db clsql:*default-database*))
- (values (database-query "select TABLE_NAME from all_catalog
- where owner <> 'PUBLIC' and owner <> 'SYSTEM' and owner <> 'SYS'"
- db nil nil)))
-
-
-(defmethod database-list-tables ((database oracle-database)
- &key (system-tables nil) owner)
- (if system-tables
- (database-query "select table_name from all_catalog" database nil nil)
- (database-query "select table_name from all_catalog where owner <> 'PUBLIC' and owner <> 'SYSTEM' and owner <> 'SYS'"
- database nil nil)))
-
-;; Return a list of all columns in TABLE.
-;;
-;; The Allegro version of this also returned a second value.
-
-(defmethod list-all-table-columns (table (db oracle-database))
- (declare (type string table))
- (unless db
- (setf db clsql:*default-database*))
- (let* ((sql-stmt (concatenate
- 'simple-string
- "select "
- "'',"
- "all_tables.OWNER,"
- "'',"
- "user_tab_columns.COLUMN_NAME,"
- "user_tab_columns.DATA_TYPE from user_tab_columns,"
- "all_tables where all_tables.table_name = '" table "'"
- " and user_tab_columns.table_name = '" table "'"))
- (preresult (sql sql-stmt :db db :types :auto)))
- ;; PRERESULT is like RESULT except that it has a name instead of
- ;; type codes in the fifth column of each row. To fix this, we
- ;; destructively modify PRERESULT.
- (dolist (preresult-row preresult)
- (setf (fifth preresult-row)
- (if (find (fifth preresult-row)
- #("NUMBER" "DATE")
- :test #'string=)
- 2 ; numeric
- 1))) ; string
- preresult))
-
-(defmethod database-list-attributes (table (database oracle-database) &key owner)
- (let* ((relname (etypecase table
- (clsql-sys::sql-ident
- (string-upcase
- (symbol-name (slot-value table 'clsql-sys::name))))
- (string table))))
+(defmethod database-list-tables ((database oracle-database) &key owner)
+ (let ((query
+ (cond ((null owner)
+ "select table_name from user_tables")
+ ((eq owner :all)
+ "select table_name from all_tables")
+ (t
+ (format nil
+ "select user_tables.table_name from user_tables,all_tables where user_tables.table_name=all_tables.table_name and all_tables.owner='~:@(~A~)'"
+ owner)))))
+ (mapcar #'car (database-query query database nil nil))))
+
+
+(defmethod database-list-views ((database oracle-database) &key owner)
+ (let ((query
+ (cond ((null owner)
+ "select view_name from user_views")
+ ((eq owner :all)
+ "select view_name from all_views")
+ (t
+ (format nil
+ "select user_views.view_name from user_views,all_views where user_views.view_name=all_views.view_name and all_views.owner='~:@(~A~)'"
+ owner)))))