经常在大家的SQL回复中看到诸如:
set @str = '1,2,3,4,5'
set @sql = 'select ''' + replace(@str , ',' , ''' as id union all select ''')
set @sql = @sql + ''''
的语句 那么这里面的@是什么意思啊?

解决方案 »

  1.   

    声明 Transact-SQL 变量
    DECLARE 语句可以通过以下操作初始化 Transact-SQL 变量: 指派名称。名称的第一个字符必须为 @。
    指派系统提供或用户定义的数据类型和长度。对于数字变量还指定精度和小数位数。
    将值设置为 NULL。 
    说明  对局部变量使用系统提供的数据类型可尽可能减少将来的维护问题。 
    例如,下面的 DECLARE 语句使用 int 数据类型创建名称为 @mycounter 的局部变量。DECLARE @MyCounter INT若要声明多个局部变量,请在定义的第一个局部变量后使用一个逗号,然后指定下一个局部变量名称和数据类型。例如,下面的 DECLARE 语句创建三个局部变量,名称分别为 @last_name、@fname 和 @state,并将每个变量初始化为 NULL:DECLARE @LastName NVARCHAR(30), @FirstName NVARCHAR(20), @State NCHAR(2)变量的作用域为可以引用该变量的 Transact-SQL 语句范围。变量的作用域从声明变量的地方开始到声明变量的批处理或存储过程的结尾。例如,下面脚本产生语法错误,因为在一个批处理中所引用的变量是在另一个批处理中定义的:DECLARE MyVariable INT
    SET @MyVariable = 1
    GO -- This terminates the batch.
    -- @MyVariable has gone out of scope and no longer exists.-- This SELECT statement gets a syntax error because it is
    -- no longer legal to reference @MyVariable.
    SELECT *
    FROM Employees
    WHERE EmployeeID = @MyVariable
      

  2.   

    定义的参数,SQL中的参数(变量)都必须以@开头,系统变量以@@开头
      

  3.   

    声明 Transact-SQL 变量