ALTER PROCEDURE [dbo].[InsertAllUrl] 
    @table nvarchar(40), 
    @urlID int, 
    @url varchar(900) 
AS 
  declare @sql nvarchar(1000) 
  set @sql=N'insert into '+@table+'(urlID, url) values('''+rtrim(@urlID)+''','''+@url+''')' 
  execute  sp_executesql @sql 
GO

解决方案 »

  1.   

    字符串串联字符类型要一致.ALTER PROCEDURE [dbo].[InsertAllUrl] 
        @table nvarchar(40), 
        @urlID int, 
        @url varchar(900) 
    AS 
      declare @sql nvarchar(1000) 
      set @sql=N'insert into '+@table+'(urlID, url) values('''+cast(@urlID as varchar)+''','''+@url+''')' 
      execute  sp_executesql @sql 
    GO
      

  2.   


    ALTER PROCEDURE [dbo].[InsertAllUrl] 
        @table nvarchar(40), 
        @urlID int, 
        @url varchar(900) 
    AS 
      declare @sql nvarchar(1000) 
      set @sql=N'insert into '+@table+'(urlID, url) values('+@urlID+','''+@url+''')' 
      execute  sp_executesql @sql 
    GO整型数不需要加引号吧!
      

  3.   

    问题已经解决了set @sql=N'insert into '+@table+'(urlID, url) values('''+@urlID+''','''+@url+''')' 
    改为
    set @sql=N'insert into '+@table+'(urlID, url) values('''+str(@urlID)+''','''+@url+''')' 原因:@sql是一个varchar类型,所以=后边的也要为varchar,但@urlID是int,故需要用str()函数转换一下