CREATE TABLE #AspstateVer
(
    c1 INT,
    c2 CHAR(100),
    c3 CHAR(100),
    version CHAR(100)
)INSERT INTO #AspstateVer
EXEC master..xp_msver ProductVersionDECLARE @version CHAR(100)
DECLARE @dot INTSELECT @version = version FROM #AspstateVer
SELECT @dot = CHARINDEX('.', @version)
SELECT @@ver = CONVERT(INT, SUBSTRING(@version, 1, @dot-1))
GO   一运行就说我@@ver 没有定义?在哪里定义啊?

解决方案 »

  1.   

    DECLARE @dot INT 
    --这里懂怎么定义..在哪定义..@@ver就不知道怎么定义..在哪定义?...
      

  2.   

     @@ver --带两个@@的一般是系统变量,一般不允许用户自己定义,赋值。所以还是改为:
    DECLARE @version CHAR(100) 
    DECLARE @dot INT 
    declare @ver int
    SELECT @version = version FROM #AspstateVer 
    SELECT @dot = CHARINDEX('.', @version) 
    SELECT @ver = CONVERT(INT, SUBSTRING(@version, 1, @dot-1)) 
      

  3.   

    例如:@@error,你是不能自己定义它的,也不能自己给它赋值
      

  4.   


    你的SELECT @ver = CONVERT(INT, SUBSTRING(@version, 1, @dot-1)) 这句话出错了,
    凡是带有两个@符号为全局变量,这是由系统自带的,用户不可以自定义,用户只可以定义局部变量,
    局部变量的定义是一个@符号和变量名[比如:@aa @cc @ee].全局变量和局变量区别在于:
    1.全局是系统自带的,是封装好的,用户不可以自定义,只有使用权.
    2.局部变量是由用户自定义,自己使用,当然也可以随便定义,要符合sql定义变量的规则.
      

  5.   

    好像不能自己定义这样的变量。那是系统级别的变量。我们没有这样的权限。改成@ver试试!