第一次写存储过程,出个错,各位高手看下
存储过程如下
CREATE PROCEDURE [dbo].[upt]
@station varchar(5),
@yeares int,
@monthes int,
@dayes int,
@tave money,
@num int output
AS
begin
declare @sql varchar(200)
If not exists(select 1 from [dbo].[tave] where [station] = @station and [yeares]=@yeares and [monthes]=@monthes and [dayes]=@dayes )
return 1
set @sql = ''
If not @tave Is Null
set @sql = @sql + '[tave] = ' + @tave
If @sql = ''
return 2
EXEC ('Update [dbo].[tave] set ' + @sql + ' where [station] =' + @station + ' and [yeares]=' + @yeares + 'and [monthes]=' + @monthes + ' and [dayes]=' + @dayes )
return 3
end
go
-----------------------------
调用语句
declare @num int
exec dbo.upt '51053','2010','12','1',7,@num output
SELECT @num
------------------------------
出错信息
消息 235,级别 16,状态 0,过程 upt,第 39 行
无法将 char 值转换为 money。该 char 值的语法有误。
------解决方案--------------------
set @sql = @sql + '[tave] = ' + cast(@tave as varchar(100))