读书人

存储过程 错在哪?该怎么解决

发布时间: 2013-01-01 14:04:19 作者: rapoo

存储过程 错在哪?
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出来看看是什么情况再调试,下班了,回去看

读书人网 >SQL Server

热点推荐