存储过程如:if exists(select 1 from sysobjects where name='BaseCodeSave_p' and xtype='p')
drop procedure dbo.BaseCodeSave_p
go
create procedure BaseCodeSave_p    
    
    @tempStart        smallint,     
    @tempEnd          smallint      
 
as 
  SET NOCOUNT ON
   declare @sql  nvarchar(2000)
   declare   @renderS varchar(64)
 begin
   set @sql='insert into baseCode_t(tempetureStart,tempetureEnd ) values ('+@tempStart +','+@tempEnd+')'  
    select @sql  
 
 end
测试执行:
exec BaseCodeSave_p @tempStart=1, @tempEnd=2  
提示:
消息 245,级别 16,状态 1,过程 BaseCodeSave_p,第 11 行
在将 varchar 值 'insert into baseCode_t(tempetureStart,tempetureEnd ) values (' 转换成数据类型 smallint 时失败。

解决方案 »

  1.   

    if exists(select 1 from sysobjects where name='BaseCodeSave_p' and xtype='p')
    drop procedure dbo.BaseCodeSave_p
    go
    create procedure BaseCodeSave_p    
        
        @tempStart        smallint,     
        @tempEnd          smallint      
     
    as 
      SET NOCOUNT ON
       declare @sql  nvarchar(2000)
       declare   @renderS varchar(64)
     begin
       set @sql='insert into baseCode_t(tempetureStart,tempetureEnd ) values ('+ltrim(@tempStart) +','+ltrim(@tempEnd)+')'  
        select @sql  
         
     end
      

  2.   

    或直接用
    if exists(select 1 from sysobjects where name='BaseCodeSave_p' and xtype='p')
    drop procedure dbo.BaseCodeSave_p
    go
    create procedure BaseCodeSave_p    
        
        @tempStart        smallint,     
        @tempEnd          smallint      
     
    as 
      SET NOCOUNT ON
       declare @sql  nvarchar(2000)
       declare   @renderS varchar(64)
     begin
    EXEC('insert into baseCode_t(tempetureStart,tempetureEnd ) values ('+@tempStart +','+@tempEnd+')')     
     end
      

  3.   

    if exists(select 1 from sysobjects where name='BaseCodeSave_p' and xtype='p')
    drop procedure dbo.BaseCodeSave_p
    go
    create procedure BaseCodeSave_p    
        
        @tempStart        smallint,     
        @tempEnd          smallint      
     
    as 
      SET NOCOUNT ON
       declare @sql  nvarchar(2000)
       declare   @renderS varchar(64)
     begin
       set @sql='insert into baseCode_t(tempetureStart,tempetureEnd ) values ('+cast(@tempStart as varchar(100)) +','+cast(@tempEnd as varchar(100))+')'  
        select @sql  
         
     end
      

  4.   

    if exists(select 1 from sysobjects where name='BaseCodeSave_p' and xtype='p')
    drop procedure dbo.BaseCodeSave_p
    go
    create procedure BaseCodeSave_p    
        
        @tempStart        smallint,     
        @tempEnd          smallint      
     
    as 
      SET NOCOUNT ON
       declare @sql  nvarchar(2000)
       declare   @renderS varchar(64)
     begin
       set @sql='insert into baseCode_t(tempetureStart,tempetureEnd ) values ('+ltrim(@tempStart) +','+ltrim(@tempEnd)+')'  
        select @sql  
         
     end--转换成字符型再连接字串.也可以用convert函数转换.