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 database))
34 (format nil "NUMBER(~A,~A)"
35 (or (first args) 38) (or (second args) 0))
38 (defmethod database-get-type-specifier ((type (eql 'string)) args
39 database (db-type (eql :oracle)))
40 (declare (ignore database))
42 (format nil "CHAR(~A)" (car args))
43 (format nil "VARCHAR2(~D)" *default-varchar-length*)))
45 (defmethod database-get-type-specifier ((type (eql 'varchar)) args
46 database (db-type (eql :oracle)))
47 (declare (ignore database))
49 (format nil "VARCHAR2(~A)" (car args))
50 (format nil "VARCHAR2(~D)" *default-varchar-length*)))
52 (defmethod database-get-type-specifier ((type (eql 'float)) args
53 database (db-type (eql :oracle)))
54 (declare (ignore database))
56 (format nil "NUMBER(~A,~A)" (or (first args) 38) (or (second args) 38))
59 (defmethod database-get-type-specifier ((type (eql 'long-float)) args
60 database (db-type (eql :oracle)))
61 (declare (ignore database))
63 (format nil "NUMBER(~A,~A)"
64 (or (first args) 38) (or (second args) 38))
67 (defmethod database-get-type-specifier ((type (eql 'boolean)) args
68 database (db-type (eql :oracle)))
69 (declare (ignore args database))
72 (defmethod read-sql-value (val type
73 database (db-type (eql :oracle)))
74 ;;(format t "value is \"~A\" of type ~A~%" val (type-of val))
75 (declare (ignore type database))
78 (read-from-string val))
82 (defmethod read-sql-value (val (type (eql 'integer))
83 database (db-type (eql :oracle)))
84 (declare (ignore database))
87 (defmethod read-sql-value (val (type (eql 'float))
88 database (db-type (eql :oracle)))
89 (declare (ignore database))
92 (defmethod read-sql-value (val (type (eql 'boolean))
93 database (db-type (eql :oracle)))
94 (declare (ignore database))
95 (when (char-equal #\t (schar val 0))
98 (defmethod database-get-type-specifier ((type (eql 'wall-time)) args
99 database (db-type (eql :oracle)))
100 (declare (ignore args database))
103 (defmethod database-get-type-specifier ((type (eql 'duration)) args
104 database (db-type (eql :oracle)))
105 (declare (ignore args database))