在存储过程中这个sql语句拼凑

jodor 2009-11-22 01:20:57
create proc SelectLoginLog
@ intext nvarchar(300)
as
declare @sqltext as nvarchar(300)
set @sqltext='select * from loginlog '
exec (@sqltext+@intext)
go

在执行的时候
exec SelectLoginLog 'where loginId in(27,28)'

这样执行不了,说无法将varchar转为int,loginId是int型的怎么办
...全文
62 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jodor 2009-11-22
  • 打赏
  • 举报
回复
2L:
有没有办法让传进去的参数仅仅是27,28
在存储过程中的语句是
exec('select * from LoginLog where loginId in(@intext)')呢
其实原本是想做这种效果的来着,不过分照给啦
dawugui 2009-11-22
  • 打赏
  • 举报
回复
create table loginlog(loginid int)
insert into loginlog values(27)
insert into loginlog values(28)
go
create proc SelectLoginLog
@intext nvarchar(300)
as
declare @sqltext as nvarchar(300)
set @sqltext='select * from loginlog '
exec (@sqltext+@intext)
go

exec SelectLoginLog ' where loginId in(27,28)'

drop table loginlog
drop proc SelectLoginLog

/*
loginid
-----------
27
28

(所影响的行数为 2 行)
*/

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧