declare @TemId varchar(50)
set @TemId='1,2,3,4,5'
Select * From UserInfo Where UserId in (@TemId)给存储过程传入一个数据@TemId 找出 UserInfo 表中 UserId 在 @TemId 的所有数据,会提示错误:
将 varchar 值 '1,2,3,4,5' 转换为数据类型为 int 的列时发生语法错误。如果用
Select * From UserInfo Where UserId in ('1,2,3,4,5')就能查询出来
@TemId 是一个变量,如何传入啊
Select * From UserInfo Where UserId in (1,2,3,4,5)就能查询出来
@TemId 是一个变量,如何传入啊
CREATE proc proc1
(
@TemId
)
as
declare @sql varchar(4000)set @sql='Select * From UserInfo Where UserId in (replace(@TemId,''','')) '
exec @sql
go
set @TemId='1,2,3,4,5' declare @sql varchar(100)
set @sql = 'Select * From UserInfo Where UserId in (0'if len( @tempid) >0
begin
set @sql = @sql + ','+@temid + ')'end
else
begin
set @sql = @sql + ')'
endexec @sql
set @TemId='1,2,3,4,5'
Select * From UserInfo Where UserId in (@TemId) 这样应该可以的
不行的话试试 declare @TemId varchar(50)
set @TemId='1,2,3,4,5'
Exec ('Select * From UserInfo Where UserId in ('+@TemId+')')
(
@TemId varchar(100)
)
as
declare @sql varchar(4000)set @sql='Select * From UserInfo Where UserId in (@TemId) '
exec @sql
goexec proc1 '1,2,3,4,5'