00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 require_once 'creole/CreoleTypes.php';
00024
00032 class MSSQLTypes extends CreoleTypes {
00033
00035 private static $typeMap = array (
00036 "binary" => CreoleTypes::BINARY,
00037 "bit" => CreoleTypes::BOOLEAN,
00038 "char" => CreoleTypes::CHAR,
00039 "datetime" => CreoleTypes::TIMESTAMP,
00040 "decimal() identity" => CreoleTypes::DECIMAL,
00041 "decimal" => CreoleTypes::DECIMAL,
00042 "image" => CreoleTypes::LONGVARBINARY,
00043 "int" => CreoleTypes::INTEGER,
00044 "int identity" => CreoleTypes::INTEGER,
00045 "integer" => CreoleTypes::INTEGER,
00046 "money" => CreoleTypes::DECIMAL,
00047 "nchar" => CreoleTypes::CHAR,
00048 "ntext" => CreoleTypes::LONGVARCHAR,
00049 "numeric() identity" => CreoleTypes::NUMERIC,
00050 "numeric" => CreoleTypes::NUMERIC,
00051 "nvarchar" => CreoleTypes::VARCHAR,
00052 "real" => CreoleTypes::REAL,
00053 "float" => CreoleTypes::FLOAT,
00054 "smalldatetime" => CreoleTypes::TIMESTAMP,
00055 "smallint" => CreoleTypes::SMALLINT,
00056 "smallint identity" => CreoleTypes::SMALLINT,
00057 "smallmoney" => CreoleTypes::DECIMAL,
00058 "sysname" => CreoleTypes::VARCHAR,
00059 "text" => CreoleTypes::LONGVARCHAR,
00060 "timestamp" => CreoleTypes::BINARY,
00061 "tinyint identity" => CreoleTypes::TINYINT,
00062 "tinyint" => CreoleTypes::TINYINT,
00063 "uniqueidentifier" => CreoleTypes::CHAR,
00064 "varbinary" => CreoleTypes::VARBINARY,
00065 "varchar" => CreoleTypes::VARCHAR,
00066 "uniqueidentifier" => CreoleTypes::CHAR,
00067
00068 "bigint identity" => CreoleTypes::BIGINT,
00069 "bigint" => CreoleTypes::BIGINT,
00070 "sql_variant" => CreoleTypes::VARCHAR,
00071 );
00072
00074 private static $reverseMap = null;
00075
00076 public static function getType($mssqlType)
00077 {
00078 $t = strtolower($mssqlType);
00079 if (isset(self::$typeMap[$t])) {
00080 return self::$typeMap[$t];
00081 } else {
00082 return CreoleTypes::OTHER;
00083 }
00084 }
00085
00086 public static function getNativeType($creoleType)
00087 {
00088 if (self::$reverseMap === null) {
00089 self::$reverseMap = array_flip(self::$typeMap);
00090 }
00091 return @self::$reverseMap[$creoleType];
00092 }
00093
00094 }