set @NewsID=@@IDENTITY
print @NewsID --正常  
set @sql='insert into  '+@dbname+'.[dbo].[articleofchannel]   (channelid,articlepageid)  values('+Rtrim(@ChannelID)+','+Rtrim(@NewsID)+' )'  --在这儿就出错了
print @sql

解决方案 »

  1.   

    將int類型轉換下即可。通常是這麼寫的
    set @NewsID=@@IDENTITY
    print @NewsID --正常  
    set @sql='insert into  '+@dbname+'.[dbo].[articleofchannel]   (channelid,articlepageid)  values('+Cast(@ChannelID As Varchar)+','+Cast(@NewsID As Varchar)+' )'  --在这儿就出错了
    print @sql
      

  2.   


    --需要先转换为 字符型,如:
    set @sql='insert into  '+@dbname+'.[dbo].[articleofchannel]   (channelid,articlepageid) 
    values('+ cast(@ChannelID as varchar(100))+','+ cast(@NewsID as varchar(100))+' )'  --在这儿就出错了
      

  3.   

    錯誤的原因在於,@sql是字符串型的,而@NewsID 是int型,組合語句的時候需要將類型轉為一致。
      

  4.   

    晕倒,之前用set @NewsID=@@IDENTITY
    print @NewsID --正常  
    set @sql='insert into  '+@dbname+'.[dbo].[articleofchannel]   (channelid,articlepageid)  values('+@ChannelID+','''+@NewsID+''' )'  --在这儿就出错了
    print @sql
    也总是不行
      

  5.   

    数值型或日期型,都需要先转换为字符型,再连接到SQL串中。