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
21 (type args (database oracle-database))
22 (declare (ignore type args))
23 (concatenate 'string "VARCHAR2(" *oracle-default-varchar2-length* ")"))
25 (defmethod database-get-type-specifier ((type (eql 'integer)) args (database oracle-database))
27 (format nil "NUMBER(~A,~A)"
28 (or (first args) 38) (or (second args) 0))
31 (defmethod database-get-type-specifier
32 ((type (eql 'bigint)) args (database oracle-database))
34 (format nil "NUMBER(~A,~A)"
35 (or (first args) 38) (or (second args) 0))
38 (defmethod database-get-type-specifier
39 ((type (eql 'simple-base-string)) args (database oracle-database))
41 (format nil "VARCHAR2(~A)" (car args))
42 (concatenate 'string "VARCHAR2(" *oracle-default-varchar2-length* ")")))
44 (defmethod database-get-type-specifier
45 ((type (eql 'simple-string)) args (database oracle-database))
47 (format nil "VARCHAR2(~A)" (car args))
48 (concatenate 'string "VARCHAR2(" *oracle-default-varchar2-length* ")")))
50 (defmethod database-get-type-specifier
51 ((type (eql 'string)) args (database oracle-database))
53 (format nil "VARCHAR2(~A)" (car args))
54 (concatenate 'string "VARCHAR2(" *oracle-default-varchar2-length* ")")))
56 (defmethod database-get-type-specifier
57 ((type (eql 'raw-string)) args (database oracle-database))
59 (format nil "VARCHAR2(~A)" (car args))
60 (concatenate 'string "VARCHAR2(" *oracle-default-varchar2-length* ")")))
62 (defmethod database-get-type-specifier
63 ((type (eql 'float)) args (database oracle-database))
65 (format nil "NUMBER(~A,~A)" (or (first args) 38) (or (second args) 38))
68 (defmethod database-get-type-specifier
69 ((type (eql 'long-float)) args (database oracle-database))
71 (format nil "NUMBER(~A,~A)"
72 (or (first args) 38) (or (second args) 38))
75 (defmethod database-get-type-specifier
76 ((type (eql 'boolean)) args (database oracle-database))
77 (declare (ignore args))
80 (defmethod read-sql-value (val type (database oracle-database))
81 ;;(format t "value is \"~A\" of type ~A~%" val (type-of val))
82 (declare (ignore type))
85 (read-from-string val))
89 (defmethod read-sql-value
90 (val (type (eql 'integer)) (database oracle-database))
93 (defmethod read-sql-value (val (type (eql 'float)) (database oracle-database))
96 (defmethod read-sql-value (val (type (eql 'boolean)) (database oracle-database))
97 (when (char-equal #\t (schar val 0))
100 (defmethod database-get-type-specifier
101 ((type (eql 'wall-time)) args (database oracle-database))
102 (declare (ignore args))
105 (defmethod database-get-type-specifier
106 ((type (eql 'duration))
108 (database oracle-database))
109 (declare (ignore args))