存储过程 参数问题·~

来源:百度知道 编辑:UC知道 时间:2024/05/25 09:54:33
create proc dingshuzongbiao_hekan
(
@kanhao varchar(50), -- 刊号
@selval varchar(50), -- 期数组成的字符串
@niandu varchar(50)
)
as
declare @qishu varchar(50)
set @qishu=(select top 1 qishu from (select qishu,max(yudingshu)as zuixinyudingshu from dingshuzongbiao where kanhao=@kanhao and niandu=@niandu and qishu in (@selval) group by qishu) as b)

begin
update dingshuzongbiao set shifoudel=1 where kanhao=@kanhao and niandu=@niandu and qishu in (@selval) and qishu <>@qishu
end

exec dingshuzongbiao_hekan '10103422','2,3,4','2007'
服务器: 消息 8114,级别 16,状态 4,过程 dingshuzongbiao_hekan,行 0
将数据类型 varchar 转换为 int 时出错。

'2,3,4' 是我从前台判断拼的一个字符串,请问怎么写才正确 qishu是 int类型
declare @qishu varchar(50)
错了 应该是 int类型的 这样才一致~

--qishu in (@selval) 这里要改
--用patindex\charindex\like都 可以

charindex(','+rtrim(qishu)+',',','+@selval+',')>0
--or
patindex('%,'+rtrim(qishu)+',%',','+@selval+',')>0

--以下以like为例

create proc dingshuzongbiao_hekan
(
@kanhao varchar(50), -- 刊号
@selval varchar(50), -- 期数组成的字符串
@niandu varchar(50)
)
as
declare @qishu varchar(50)
select top 1 @qishu=qishu
from
(select qishu,
max(yudingshu)as zuixinyudingshu --这里没有意义
from dingshuzongbiao where kanhao=@kanhao and niandu=@niandu and ','+@selval+',' like '%,'+rtrim(qishu)+',%'
group by qishu) as b

begin
update dingshuzongbiao set shifoudel=1 where kanhao=@kanhao and niandu=@niandu and ','+@selval+',' like '%,'+rtrim(qishu)+',%' and qishu <>@qishu
end
go