这个存储过程为什么错?(50分)

  • 主题发起人 主题发起人 wuzhenzhen
  • 开始时间 开始时间
W

wuzhenzhen

Unregistered / Unconfirmed
GUEST, unregistred user!
我写了一个存储过程如下:
create procedure search
(@number int,@parameter char(20))
as
begin
select * from stdstion
where
@parameter=
case
when @number=0 then IDs
when @number=1 then Names
when @number=2 then Gender
when @number=3 then Age
end
end
运行正常,但如果增加when语句变成如下就无法执行了:
create procedure search
(@number int,@parameter char(20))
as
begin
select * from stdstion
where
@parameter=
case
when @number=0 then IDs
when @number=1 then Names
when @number=2 then Gender
when @number=3 then Age
when @number=4 then PoliticsFace
when @number=5 then Nation
when @number=6 then GraduateTS
when @number=7 then DpmDuty
when @number=8 then SpecialName
end
end
为什么?
 
后者输入search 0, 'D001'时出现错误:
Server: Msg 245, Level 16, State 1, Procedure search, Line 5
Syntax error converting the varchar value 'D001 ' to a
column of data type smallint.
 
number=0时,IDS<-'D001',数据类型转换不对
 
为什么会错误?怎样解决?
 
IDs的数据类型是smallint, 'D001 '无法转换成smallint
 
多人接受答案了。
 
后退
顶部