我有这个存储过程:
ALTER PROCEDURE [dbo].[getClassInfo](@ClassId int)
AS
BEGIN
SELECT [usergroupId]
,[gName]
,[accessCode]
FROM [dbo].[usergroup]
where usergroupid = @ClassId OR accessCode = @ClassId
END
现在,我希望我发送的参数检查usergroupId
是一个数字还是accessCode
这是一个字符串。
使用一个参数检查这两种情况,哪种解决方案无痛苦?
答案 0 :(得分:1)
您的参数中不能包含整数值,因此已更改为varchar。
Alter Procedure [dbo].[getClassInfo] ( @ClassId Varchar(50) )
As
Begin
If IsNumeric(@ClassId + '.0e0') = 1
Begin
Declare @ClassIdInt Int = Convert(Int , @ClassId);
Select [usergroupId]
, [gName]
, [accessCode]
From [dbo].[usergroup]
Where @ClassIdInt = [usergroupid];
End;
If IsNumeric(@ClassId + '.0e0') = 0
Begin
Select [usergroupId]
, [gName]
, [accessCode]
From [dbo].[usergroup]
Where [accessCode] = @ClassId;
End;
End;
if语句确定传递的值是否为整数,然后运行相应的查询