1 ;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*-
2 ;;;; *************************************************************************
3 ;;;; FILE IDENTIFICATION
5 ;;;; Name: oracle-objects.lisp
7 ;;;; This file is part of CLSQL.
9 ;;;; CLSQL users are granted the rights to distribute and use this software
10 ;;;; as governed by the terms of the Lisp Lesser GNU Public License
11 ;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
12 ;;;; *************************************************************************
14 (in-package #:clsql-oracle)
16 (defmethod database-get-type-specifier (type args database (db-type (eql :oracle)))
17 (declare (ignore type args database))
18 (format nil "VARCHAR2(~D)" *default-string-length*))
20 (defmethod database-get-type-specifier ((type (eql 'integer)) args
21 database (db-type (eql :oracle)))
22 (declare (ignore database))
24 (format nil "NUMBER(~A,~A)"
25 (or (first args) 38) (or (second args) 0))
28 (defmethod database-get-type-specifier ((type (eql 'bigint)) args
29 database (db-type (eql :oracle)))
30 (declare (ignore args database))
33 (defmethod database-get-type-specifier ((type (eql 'universal-time)) args
34 database (db-type (eql :oracle)))
35 (declare (ignore args database))
38 (defmethod database-get-type-specifier ((type (eql 'string)) args
39 database (db-type (eql :oracle)))
40 (declare (ignore database))
42 (format nil "CHAR(~A)" (car args))
43 (format nil "VARCHAR2(~D)" *default-string-length*)))
45 (defmethod database-get-type-specifier ((type (eql 'varchar)) args
46 database (db-type (eql :oracle)))
47 (declare (ignore database))
49 (format nil "VARCHAR2(~A)" (car args))
50 (format nil "VARCHAR2(~D)" *default-string-length*)))
52 (defmethod database-get-type-specifier ((type (eql 'float)) args
53 database (db-type (eql :oracle)))
54 (declare (ignore database))
56 (format nil "NUMBER(~A,~A)" (or (first args) 38) (or (second args) 38))
59 (defmethod database-get-type-specifier ((type (eql 'long-float)) args
60 database (db-type (eql :oracle)))
61 (declare (ignore database))
63 (format nil "NUMBER(~A,~A)"
64 (or (first args) 38) (or (second args) 38))
67 (defmethod database-get-type-specifier ((type (eql 'boolean)) args
68 database (db-type (eql :oracle)))
69 (declare (ignore args database))
72 (defmethod database-get-type-specifier ((type (eql 'generalized-boolean)) args
73 database (db-type (eql :oracle)))
74 (declare (ignore args database))
77 (defmethod read-sql-value (val type
78 database (db-type (eql :oracle)))
79 ;;(format t "value is \"~A\" of type ~A~%" val (type-of val))
80 (declare (ignore type database))
83 (read-from-string val))
87 (defmethod read-sql-value (val (type (eql 'integer))
88 database (db-type (eql :oracle)))
89 (declare (ignore database))
92 (defmethod read-sql-value (val (type (eql 'float))
93 database (db-type (eql :oracle)))
94 (declare (ignore database))
97 (defmethod read-sql-value (val (type (eql 'boolean))
98 database (db-type (eql :oracle)))
99 (declare (ignore database))
100 (when (char-equal #\t (schar val 0))
103 (defmethod read-sql-value (val (type (eql 'generalized-boolean))
104 database (db-type (eql :oracle)))
105 (declare (ignore database))
106 (when (char-equal #\t (schar val 0))
109 (defmethod read-sql-value (val (type (eql 'bigint))
110 database (db-type (eql :oracle)))
111 (declare (ignore database))
114 (defmethod read-sql-value (val (type (eql 'universal-time))
115 database (db-type (eql :oracle)))
116 (declare (ignore database))
120 (defmethod database-get-type-specifier ((type (eql 'wall-time)) args
121 database (db-type (eql :oracle)))
122 (declare (ignore args database))
125 (defmethod database-get-type-specifier ((type (eql 'duration)) args
126 database (db-type (eql :oracle)))
127 (declare (ignore args database))