细节问题: 存储过程中使用 @ 和 @@ 的区别及用途???

解决方案 »

  1.   

    @开头的局部变量,@@开头的是全局变量.
    用户可以定义@开头的局部变量,而不能定义@@开头的全局变量.即使用户定义了@@开头的变量也不是全局的,只是局部的.换句话说,@@开头的局部变量是由SQLSERVER系统控制的,只有少数几个.
    详情请楼主参考DECLARE帮助.
      

  2.   

    任何程序设计都离不开变量,T-SQL也同样需要变量来辅助.
    T-SQL里的变量除了要使用@前缀来标识外,对变量的赋值和读取变量的值也比较特殊.
    在SQLSERVER中,为变量赋值要使用SELECT或SET,二者的区别之一是SELECT可以为多个变量赋值,而SET只能为一个变量赋值.例如:
    delcare @id int,@name varchar(50)
    select @id = 1,@name = '张三'
    set @id = 1
    set @name = '张三'
    另外一个重要区别是,SELECT可以将查询的结果保存到变量中,例如:
    select @id = ID,@name = Name from table where ID = 1    /*对@id,@name赋值*/
    select @id,@name      /*返回@id,@name*/
    declare @count int
    select @count = count(*) from table      /*获得记录数并保存到@count中*/
    select @count      /*返回记录数*/如上所示,查询或返回变量的值必须用select.另外可以使用print @变量名来在查询分析器中显示变量值,该命令只是显示变量值,而select则返回结果集.
      

  3.   

    @ 自定义变量和 @@是全局变量,全局变更是系统默认的,不能自己定义。。
    如@@rowcount是返回某条查询语句的行数