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-varchar-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-varchar-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-varchar-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))