我在SQL Server 2000中使用SQL查询分析器运行此查询:
create table TABLENAME(
DBID_ bigint not null,
CLASS_ varchar(255) not null,
DBVERSION_ integer not null,
KEY_ varchar(255),
CONVERTER_ varchar(255),
HIST_ bit,
EXECUTION_ bigint,
TASK_ bigint,
LOB_ bigint,
DATE_VALUE_ timestamp,
DOUBLE_VALUE_ double,
CLASSNAME_ varchar(255),
LONG_VALUE_ bigint,
STRING_VALUE_ varchar(255),
TEXT_VALUE_ longvarchar,
EXESYS_ bigint,
primary key (DBID_)
);
但是会发生错误:
服务器:消息170,级别15,状态1,行12行12:','附近的语法不正确。
答案 0 :(得分:2)
问题在于double
列上的DOUBLE_VALUE_
数据类型。您需要将其更改为其他数据类型
您还在列longvarchar
上使用TEXT_VALUE_
的数据类型无效:
您也很可能需要将timestamp
替换为datetime
。根据相应列的名称(DATE_VALUE_
),您似乎错误地将timestamp
误认为与时间戳有关的类型,which it doesn't。
create table TABLENAME(
DBID_ bigint not null,
CLASS_ varchar(255) not null,
DBVERSION_ integer not null,
KEY_ varchar(255),
CONVERTER_ varchar(255),
HIST_ bit,
EXECUTION_ bigint,
TASK_ bigint,
LOB_ bigint,
DATE_VALUE_ timestamp, -- consider changing this to datetime
DOUBLE_VALUE_ double, -- change this to another datatype -- use float
CLASSNAME_ varchar(255),
LONG_VALUE_ bigint,
STRING_VALUE_ varchar(255),
TEXT_VALUE_ longvarchar, -- change this datatype -- varchar(8000) or text
EXESYS_ bigint,
primary key (DBID_)
);
答案 1 :(得分:0)
double
不是有效的日期类型。试试real
或float
。
float:使用以下有效值浮动精度数字数据: -1.79E + 308到-2.23E - 308,0和2.23E + 308到1.79E + 308。
real:使用以下有效值浮动精度数字数据: -3.40E + 38到-1.18E - 38,0和1.18E - 38到3.40E + 38.