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 (defparameter *oracle-default-varchar2-length* "512")
20 (defmethod database-get-type-specifier (type args database (db-type (eql :oracle)))
21 (declare (ignore type args database))
22 (concatenate 'string "VARCHAR2(" *oracle-default-varchar2-length* ")"))
24 (defmethod database-get-type-specifier ((type (eql 'integer)) args
25 database (db-type (eql :oracle)))
26 (declare (ignore database))
28 (format nil "NUMBER(~A,~A)"
29 (or (first args) 38) (or (second args) 0))
32 (defmethod database-get-type-specifier ((type (eql 'bigint)) args
33 database (db-type (eql :oracle)))
34 (declare (ignore database))
36 (format nil "NUMBER(~A,~A)"
37 (or (first args) 38) (or (second args) 0))
40 (defmethod database-get-type-specifier ((type (eql 'simple-base-string)) args
41 database (db-type (eql :oracle)))
42 (declare (ignore database))
44 (format nil "VARCHAR2(~A)" (car args))
45 (concatenate 'string "VARCHAR2(" *oracle-default-varchar2-length* ")")))
47 (defmethod database-get-type-specifier ((type (eql 'simple-string)) args
48 database (db-type (eql :oracle)))
49 (declare (ignore database))
51 (format nil "VARCHAR2(~A)" (car args))
52 (concatenate 'string "VARCHAR2(" *oracle-default-varchar2-length* ")")))
54 (defmethod database-get-type-specifier ((type (eql 'string)) args
55 database (db-type (eql :oracle)))
56 (declare (ignore database))
58 (format nil "VARCHAR2(~A)" (car args))
59 (concatenate 'string "VARCHAR2(" *oracle-default-varchar2-length* ")")))
61 (defmethod database-get-type-specifier ((type (eql 'raw-string)) args
62 database (db-type (eql :oracle)))
63 (declare (ignore database))
65 (format nil "VARCHAR2(~A)" (car args))
66 (concatenate 'string "VARCHAR2(" *oracle-default-varchar2-length* ")")))
68 (defmethod database-get-type-specifier ((type (eql 'float)) args
69 database (db-type (eql :oracle)))
70 (declare (ignore database))
72 (format nil "NUMBER(~A,~A)" (or (first args) 38) (or (second args) 38))
75 (defmethod database-get-type-specifier ((type (eql 'long-float)) args
76 database (db-type (eql :oracle)))
77 (declare (ignore database))
79 (format nil "NUMBER(~A,~A)"
80 (or (first args) 38) (or (second args) 38))
83 (defmethod database-get-type-specifier ((type (eql 'boolean)) args
84 database (db-type (eql :oracle)))
85 (declare (ignore args database))
88 (defmethod read-sql-value (val type
89 database (db-type (eql :oracle)))
90 ;;(format t "value is \"~A\" of type ~A~%" val (type-of val))
91 (declare (ignore type database))
94 (read-from-string val))
98 (defmethod read-sql-value (val (type (eql 'integer))
99 database (db-type (eql :oracle)))
100 (declare (ignore database))
103 (defmethod read-sql-value (val (type (eql 'float))
104 database (db-type (eql :oracle)))
105 (declare (ignore database))
108 (defmethod read-sql-value (val (type (eql 'boolean))
109 database (db-type (eql :oracle)))
110 (declare (ignore database))
111 (when (char-equal #\t (schar val 0))
114 (defmethod database-get-type-specifier ((type (eql 'wall-time)) args
115 database (db-type (eql :oracle)))
116 (declare (ignore args database))
119 (defmethod database-get-type-specifier ((type (eql 'duration)) args
120 database (db-type (eql :oracle)))
121 (declare (ignore args database))