日期:2014-05-17  浏览次数:20479 次

存储过程 错在哪?
USE [chaowind]
GO
/****** Object:  StoredProcedure [dbo].[addnew1]    Script Date: 12/05/2012 17:22:02 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[addnew1]  
@station varchar(5),  
@datetime varchar(16), 
@u1 varchar(10), 
@v1 varchar(10), 
@w1 varchar(10), 

@num int output
AS  

begin  
  declare @sql varchar(400)  
  declare @sql1 varchar(200)  
  declare @sql2 varchar(200)  

  If  exists(select 1 from [dbo].[wind] where [station] = @station and [datetime]=@datetime  )  
  return 1  

  set @sql = ' insert into [dbo].[wind] ([id],[station],[datetime]'  
  set @sql1 = ''  
  set @sql2 = ''  

  If not @u1   Is Null
  set @sql1 = @sql1 + ',[u1]' 
  set @sql2 = @sql2 + ',' + @u1

 

  If not @v1   Is Null
  set @sql1 = @sql1 + ',[v1]' 
  set @sql2 = @sql2 + ',' + @v1
 
  If not @w1   Is Null
  set @sql1 = @sql1 + ',[w1]' 
  set @sql2 = @sql2 + ',' + @w1
 
 if @sql1 =''
 return 2
 set @sql = @sql + @sql1 + ') values (' + @station +  @datetime + ',' + @station + ',' + @datetime + @sql1 + ')'


 


  EXEC (@sql)
  return 3  

end  

执行如下:

USE [chaowind]
declare @num int

exec [dbo].[addnew1] '51053','20101212121201','12','1',1,@num output
SELECT @num

错误:

消息 207,级别 16,状态 1,第 1 行
列名 'u1' 无效。
消息 207,级别 16,状态 1,第 1 行
列名 'v1' 无效。
消息 207,级别 16,状态 1,第 1 行
列名 'w1' 无效。

(1 行受影响)

------解决方案--------------------
先不exec,先print出来看看是什么情况再调试,下班了,回去看