r2913: *** empty log message ***
[clsql.git] / db-oracle / oracle-objects.cl
1 (in-package :clsql-oracle)
2
3 (defparameter *oracle-default-varchar2-length* "512")
4
5 (defmethod database-get-type-specifier
6   (type args (database oracle-database))
7   (declare (ignore type args))
8   (concatenate 'string "VARCHAR2(" *oracle-default-varchar2-length* ")"))
9
10 (defmethod database-get-type-specifier
11   ((type (eql 'integer)) args (database oracle-database))
12   (if args
13       (format nil "NUMBER(~A,~A)"
14               (or (first args) 38) (or (second args) 0))
15     "NUMBER(38,0)"))
16
17 (defmethod database-get-type-specifier
18   ((type (eql 'simple-base-string)) args (database oracle-database))
19   (if args
20       (format nil "VARCHAR2(~A)" (car args))
21     (concatenate 'string "VARCHAR2(" *oracle-default-varchar2-length* ")")))
22
23 (defmethod database-get-type-specifier
24   ((type (eql 'simple-string)) args (database oracle-database))
25   (if args
26       (format nil "VARCHAR2(~A)" (car args))
27     (concatenate 'string "VARCHAR2(" *oracle-default-varchar2-length* ")")))
28
29 (defmethod database-get-type-specifier
30   ((type (eql 'string)) args (database oracle-database))
31   (if args
32       (format nil "VARCHAR2(~A)" (car args))
33     (concatenate 'string "VARCHAR2(" *oracle-default-varchar2-length* ")"))
34   "VARCHAR2(512)")
35
36 (defmethod database-get-type-specifier
37   ((type (eql 'raw-string)) args (database oracle-database))
38   (if args
39       (format nil "VARCHAR2(~A)" (car args))
40     (concatenate 'string "VARCHAR2(" *oracle-default-varchar2-length* ")"))
41   "VARCHAR2(256)")
42
43 (defmethod database-get-type-specifier
44   ((type (eql 'float)) args (database oracle-database))
45   (if args
46       (format nil "NUMBER(~A,~A)"
47               (or (first args) 38) (or (second args) 38))
48     "NUMBER"))
49
50 (defmethod database-get-type-specifier
51   ((type (eql 'long-float)) args (database oracle-database))
52   (if args
53       (format nil "NUMBER(~A,~A)"
54               (or (first args) 38) (or (second args) 38))
55     "NUMBER"))
56
57 (defmethod read-sql-value (val type (database oracle-database))
58   (declare (ignore type database))
59   ;;(format t "value is \"~A\" of type ~A~%" val (type-of val))
60   (etypecase val
61     (string
62      (read-from-string val))
63     (symbol
64      nil)))
65
66 (defmethod read-sql-value (val (type (eql 'string)) database)
67   (declare (ignore database))
68   val)
69
70 (defmethod read-sql-value
71   (val (type (eql 'integer)) (database oracle-database))
72   (declare (ignore database))
73   val)
74
75 (defmethod read-sql-value (val (type (eql 'float)) (database oracle-database))
76   val)
77
78 ;;; LOCAL-TIME stuff that needs to go into hooks
79 #+local-time
80 (defmethod clsql-sys::database-get-type-specifier
81   ((type (eql 'local-time::local-time)) args (database oracle-database))
82   (declare (ignore args))
83   "DATE")
84
85 #+local-time
86 (defmethod clsql-sys::database-get-type-specifier
87   ((type (eql 'local-time::duration))
88    args
89    (database oracle-database))
90   (declare (ignore args))
91   "NUMBER(38)")