Version 4.0.5
[clsql/s11.git] / db-oracle / oracle-objects.lisp
blob5c7d7fb0e4090402aa78c9b538d3f73bd442b75d
1 ;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*-
2 ;;;; *************************************************************************
3 ;;;; FILE IDENTIFICATION
4 ;;;;
5 ;;;; Name: oracle-objects.lisp
6 ;;;;
7 ;;;; $Id$
8 ;;;;
9 ;;;; This file is part of CLSQL.
10 ;;;;
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))
25 (if args
26 (format nil "NUMBER(~A,~A)"
27 (or (first args) 38) (or (second args) 0))
28 "INTEGER"))
30 (defmethod database-get-type-specifier ((type (eql 'bigint)) args
31 database (db-type (eql :oracle)))
32 (declare (ignore args database))
33 "CHAR(20)")
35 (defmethod database-get-type-specifier ((type (eql 'universal-time)) args
36 database (db-type (eql :oracle)))
37 (declare (ignore args database))
38 "CHAR(20)")
40 (defmethod database-get-type-specifier ((type (eql 'string)) args
41 database (db-type (eql :oracle)))
42 (declare (ignore database))
43 (if args
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))
50 (if args
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))
57 (if args
58 (format nil "NUMBER(~A,~A)" (or (first args) 38) (or (second args) 38))
59 "DOUBLE PRECISION"))
61 (defmethod database-get-type-specifier ((type (eql 'long-float)) args
62 database (db-type (eql :oracle)))
63 (declare (ignore database))
64 (if args
65 (format nil "NUMBER(~A,~A)"
66 (or (first args) 38) (or (second args) 38))
67 "DOUBLE PRECISION"))
69 (defmethod database-get-type-specifier ((type (eql 'boolean)) args
70 database (db-type (eql :oracle)))
71 (declare (ignore args database))
72 "CHAR(1)")
74 (defmethod database-get-type-specifier ((type (eql 'generalized-boolean)) args
75 database (db-type (eql :oracle)))
76 (declare (ignore args database))
77 "CHAR(1)")
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))
83 (etypecase val
84 (string
85 (read-from-string val))
86 (symbol
87 nil)))
89 (defmethod read-sql-value (val (type (eql 'integer))
90 database (db-type (eql :oracle)))
91 (declare (ignore database))
92 val)
94 (defmethod read-sql-value (val (type (eql 'float))
95 database (db-type (eql :oracle)))
96 (declare (ignore database))
97 val)
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))
114 (parse-integer val))
116 (defmethod read-sql-value (val (type (eql 'universal-time))
117 database (db-type (eql :oracle)))
118 (declare (ignore database))
119 (parse-integer val))
122 (defmethod database-get-type-specifier ((type (eql 'wall-time)) args
123 database (db-type (eql :oracle)))
124 (declare (ignore args database))
125 "DATE")
127 (defmethod database-get-type-specifier ((type (eql 'duration)) args
128 database (db-type (eql :oracle)))
129 (declare (ignore args database))
130 "NUMBER(38)")