1 ;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*-
2 ;;;; *************************************************************************
3 ;;;; FILE IDENTIFICATION
5 ;;;; Name: oracle-objects.lisp
9 ;;;; This file is part of CLSQL.
11 ;;;; CLSQL users are granted the rights to distribute and use this software
12 ;;;; as governed by the terms of the Lisp Lesser GNU Public License
13 ;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
14 ;;;; *************************************************************************
16 (in-package #:clsql-oracle
)
18 (defmethod database-get-type-specifier (type args database
(db-type (eql :oracle
)))
19 (declare (ignore type args database
))
20 (format nil
"VARCHAR2(~D)" *default-string-length
*))
22 (defmethod database-get-type-specifier ((type (eql 'integer
)) args
23 database
(db-type (eql :oracle
)))
24 (declare (ignore database
))
26 (format nil
"NUMBER(~A,~A)"
27 (or (first args
) 38) (or (second args
) 0))
30 (defmethod database-get-type-specifier ((type (eql 'bigint
)) args
31 database
(db-type (eql :oracle
)))
32 (declare (ignore args database
))
35 (defmethod database-get-type-specifier ((type (eql 'universal-time
)) args
36 database
(db-type (eql :oracle
)))
37 (declare (ignore args database
))
40 (defmethod database-get-type-specifier ((type (eql 'string
)) args
41 database
(db-type (eql :oracle
)))
42 (declare (ignore database
))
44 (format nil
"CHAR(~A)" (car args
))
45 (format nil
"VARCHAR2(~D)" *default-string-length
*)))
47 (defmethod database-get-type-specifier ((type (eql 'varchar
)) args
48 database
(db-type (eql :oracle
)))
49 (declare (ignore database
))
51 (format nil
"VARCHAR2(~A)" (car args
))
52 (format nil
"VARCHAR2(~D)" *default-string-length
*)))
54 (defmethod database-get-type-specifier ((type (eql 'float
)) args
55 database
(db-type (eql :oracle
)))
56 (declare (ignore database
))
58 (format nil
"NUMBER(~A,~A)" (or (first args
) 38) (or (second args
) 38))
61 (defmethod database-get-type-specifier ((type (eql 'long-float
)) args
62 database
(db-type (eql :oracle
)))
63 (declare (ignore database
))
65 (format nil
"NUMBER(~A,~A)"
66 (or (first args
) 38) (or (second args
) 38))
69 (defmethod database-get-type-specifier ((type (eql 'boolean
)) args
70 database
(db-type (eql :oracle
)))
71 (declare (ignore args database
))
74 (defmethod database-get-type-specifier ((type (eql 'generalized-boolean
)) args
75 database
(db-type (eql :oracle
)))
76 (declare (ignore args database
))
79 (defmethod read-sql-value (val type
80 database
(db-type (eql :oracle
)))
81 ;;(format t "value is \"~A\" of type ~A~%" val (type-of val))
82 (declare (ignore type database
))
85 (read-from-string val
))
89 (defmethod read-sql-value (val (type (eql 'integer
))
90 database
(db-type (eql :oracle
)))
91 (declare (ignore database
))
94 (defmethod read-sql-value (val (type (eql 'float
))
95 database
(db-type (eql :oracle
)))
96 (declare (ignore database
))
99 (defmethod read-sql-value (val (type (eql 'boolean
))
100 database
(db-type (eql :oracle
)))
101 (declare (ignore database
))
102 (when (char-equal #\t (schar val
0))
105 (defmethod read-sql-value (val (type (eql 'generalized-boolean
))
106 database
(db-type (eql :oracle
)))
107 (declare (ignore database
))
108 (when (char-equal #\t (schar val
0))
111 (defmethod read-sql-value (val (type (eql 'bigint
))
112 database
(db-type (eql :oracle
)))
113 (declare (ignore database
))
116 (defmethod read-sql-value (val (type (eql 'universal-time
))
117 database
(db-type (eql :oracle
)))
118 (declare (ignore database
))
122 (defmethod database-get-type-specifier ((type (eql 'wall-time
)) args
123 database
(db-type (eql :oracle
)))
124 (declare (ignore args database
))
127 (defmethod database-get-type-specifier ((type (eql 'duration
)) args
128 database
(db-type (eql :oracle
)))
129 (declare (ignore args database
))