X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=db-oracle%2Foracle-objects.lisp;h=ea9c15b6336a13b9917820711bc0b3c8eda41483;hb=d9f41af62750c622945bb17b622a39689ee5b840;hp=5f2651593a5b63fc867433439a63f2a3d6d3e624;hpb=7308bdf188da6424e615ca14096ef53cfb845a90;p=clsql.git diff --git a/db-oracle/oracle-objects.lisp b/db-oracle/oracle-objects.lisp index 5f26515..ea9c15b 100644 --- a/db-oracle/oracle-objects.lisp +++ b/db-oracle/oracle-objects.lisp @@ -15,11 +15,9 @@ (in-package #:clsql-oracle) -(defparameter *oracle-default-varchar2-length* "512") - (defmethod database-get-type-specifier (type args database (db-type (eql :oracle))) (declare (ignore type args database)) - (concatenate 'string "VARCHAR2(" *oracle-default-varchar2-length* ")")) + (format nil "VARCHAR2(~D)" *default-string-length*)) (defmethod database-get-type-specifier ((type (eql 'integer)) args database (db-type (eql :oracle))) @@ -31,46 +29,34 @@ (defmethod database-get-type-specifier ((type (eql 'bigint)) args database (db-type (eql :oracle))) - (declare (ignore database)) - (if args - (format nil "NUMBER(~A,~A)" - (or (first args) 38) (or (second args) 0)) - "NUMBER(38,0)")) + (declare (ignore args database)) + "CHAR(20)") -(defmethod database-get-type-specifier ((type (eql 'simple-base-string)) args +(defmethod database-get-type-specifier ((type (eql 'universal-time)) args database (db-type (eql :oracle))) - (declare (ignore database)) - (if args - (format nil "VARCHAR2(~A)" (car args)) - (concatenate 'string "VARCHAR2(" *oracle-default-varchar2-length* ")"))) - -(defmethod database-get-type-specifier ((type (eql 'simple-string)) args - database (db-type (eql :oracle))) - (declare (ignore database)) - (if args - (format nil "VARCHAR2(~A)" (car args)) - (concatenate 'string "VARCHAR2(" *oracle-default-varchar2-length* ")"))) + (declare (ignore args database)) + "CHAR(20)") (defmethod database-get-type-specifier ((type (eql 'string)) args database (db-type (eql :oracle))) (declare (ignore database)) (if args - (format nil "VARCHAR2(~A)" (car args)) - (concatenate 'string "VARCHAR2(" *oracle-default-varchar2-length* ")"))) + (format nil "CHAR(~A)" (car args)) + (format nil "VARCHAR2(~D)" *default-string-length*))) -(defmethod database-get-type-specifier ((type (eql 'raw-string)) args +(defmethod database-get-type-specifier ((type (eql 'varchar)) args database (db-type (eql :oracle))) (declare (ignore database)) (if args (format nil "VARCHAR2(~A)" (car args)) - (concatenate 'string "VARCHAR2(" *oracle-default-varchar2-length* ")"))) + (format nil "VARCHAR2(~D)" *default-string-length*))) (defmethod database-get-type-specifier ((type (eql 'float)) args database (db-type (eql :oracle))) (declare (ignore database)) (if args (format nil "NUMBER(~A,~A)" (or (first args) 38) (or (second args) 38)) - "double precision")) + "DOUBLE PRECISION")) (defmethod database-get-type-specifier ((type (eql 'long-float)) args database (db-type (eql :oracle))) @@ -78,13 +64,18 @@ (if args (format nil "NUMBER(~A,~A)" (or (first args) 38) (or (second args) 38)) - "double precision")) + "DOUBLE PRECISION")) (defmethod database-get-type-specifier ((type (eql 'boolean)) args database (db-type (eql :oracle))) (declare (ignore args database)) "CHAR(1)") +(defmethod database-get-type-specifier ((type (eql 'generalized-boolean)) args + database (db-type (eql :oracle))) + (declare (ignore args database)) + "CHAR(1)") + (defmethod read-sql-value (val type database (db-type (eql :oracle))) ;;(format t "value is \"~A\" of type ~A~%" val (type-of val)) @@ -111,6 +102,23 @@ (when (char-equal #\t (schar val 0)) t)) +(defmethod read-sql-value (val (type (eql 'generalized-boolean)) + database (db-type (eql :oracle))) + (declare (ignore database)) + (when (char-equal #\t (schar val 0)) + t)) + +(defmethod read-sql-value (val (type (eql 'bigint)) + database (db-type (eql :oracle))) + (declare (ignore database)) + (parse-integer val)) + +(defmethod read-sql-value (val (type (eql 'universal-time)) + database (db-type (eql :oracle))) + (declare (ignore database)) + (parse-integer val)) + + (defmethod database-get-type-specifier ((type (eql 'wall-time)) args database (db-type (eql :oracle))) (declare (ignore args database))