sql如下:Declare @tblAllSn nvarchar(300) --获取所有符合条件的序列号 表--给序列号加上行号,保持到临时表 @tblAllSn 中
Set @tblAllSn='[ID_'+Cast(NewId() As varchar(40))+']'
Set @sql='Select ROW_NUMBER() OVER (ORDER BY sn_position, sn_code) As snid, sn_code As sncode Into '+@tblAllSn+' From nb_sn'问题:Set @tblAllSn='[ID_'+Cast(NewId() As varchar(40))+']' 非得要这句话???????? 
这句话起到什么作用??

解决方案 »

  1.   

    select newid() 全局随机id这是为了防止多人同时执行,或重复次执行,into出来的表名一样导致的冲突
      

  2.   

    把NewId()转换为字符串,然后与ID_相连select '[ID_'+Cast(NewId() As varchar(40))+']' /**
                                                  
    --------------------------------------------- 
    [ID_FD506CB4-8F7F-4917-9BB6-55C19710DF7B](所影响的行数为 1 行)
    **/
      

  3.   

    Select ROW_NUMBER() OVER (ORDER BY sn_position, sn_code) As snid,sn_code As sncode
    Into [ID_B59881F3-E93F-41E0-9DFC-EB19DCFC1EDE] 
    From nb_sn====
    Set @tblAllSn='[ID_'+Cast(NewId() As varchar(40))+']'
    为了保证 每次插入的表名不重复!
    而 select  newid()  是 很难重复的!
    所以。。