在SQL Server 2000中的','错误附近获取不正确的语法

时间:2012-08-21 18:02:27

标签: sql tsql sql-server-2000

我在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:','附近的语法不正确。

2 个答案:

答案 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不是有效的日期类型。试试realfloat

  

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.

MSDN Page.