【问题标题】:Getting Incorrect syntax near ',' error in SQL Server 2000SQL Server 2000 中的“,”附近出现不正确的语法错误
【发布时间】:2012-08-17 03:09:23
【问题描述】:

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

【问题讨论】:

  • 那不是 SQL Server 方言
  • 看起来 longvarchar 是 GeneXus data type
  • longvarchar 可以是用户定义的数据类型

标签: sql tsql sql-server-2000


【解决方案1】:

问题在于DOUBLE_VALUE_ 列上的double 数据类型。您需要将其更改为不同的数据类型

您还在TEXT_VALUE_ 列上使用了longvarchar 的数据类型,这是无效的:

您也很可能需要将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_)
    );

【讨论】:

  • 谢谢 .. 我有一个 sql,我想在 SQL Server 2000 中执行。我会按照告诉修改脚本
  • varchar(max) 在 SQL 2000 中不存在使用varchar(8000)(最大的varchar)或Text
  • @Magnus 谢谢,已修复。我没有要测试的 SQL 2000 实例。 :)
【解决方案2】:

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。

MSDN Page.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-09
    相关资源
    最近更新 更多