首页 新闻 赞助 找找看

动态sql语句问题请教?

0
悬赏园豆:10 [已关闭问题] 关闭于 2012-06-01 21:16

1
DECLARE @InsertLogRoleName NVARCHAR(2000) --需要插入表单日志的角色名称 2 DECLARE @Sql NVARCHAR(2000) 4 DECLARE @ParaDefinition NVARCHAR(500) 5 DECLARE @Num INT 6 BEGIN 8 SELECT @Result = 0 10 SELECT @Sql = N'SELECT @Num = count(*) FROM SYS_BPS_USERELEMENTS WHERE ltrim(rtrim(UE_CatSPM1)) IN (@AllRoles) ' 11 --获取所有要插入表单日志的角色名称 12 SELECT @InsertLogRoleName = Role FROM FormLogConfig WHERE ValidataType = 1 13 14 --获取用户角色信息,然后比对需要插入表单日志的角色,如果,比对成功,则需插入表单日志 15 SELECT @ParaDefinition = N'@Num INT OUT, @AllRoles NVARCHAR(200)' 16 PRINT @Num 17 EXECUTE sp_executesql @Sql, @ParaDefinition, @Num = @Result OUT, @AllRoles = @InsertLogRoleName, @UE_SPM1 = @User_Account

上面第10条语句in关键字后的参数AllRoles,值为 '系统管理员','Admin' ,但是为什么输出Num总是0,

而我直接这样:

 SELECT @Sql = N'SELECT @Num = count(*) FROM SYS_BPS_USERELEMENTS WHERE ltrim(rtrim(UE_CatSPM1)) IN (''系统管理员'',''Admin'' ) '

输出Num就得到正确答案,为什么?

qq1990的主页 qq1990 | 初学一级 | 园豆:137
提问于:2012-05-21 16:33
< >
分享
所有回答(4)
0

EXECUTE(@Sql) 这样执行试试

xu_happy_you | 园豆:222 (菜鸟二级) | 2012-05-21 16:37
0
悟行 | 园豆:12559 (专家六级) | 2012-05-21 16:53
0

貌似两者单引号出不同

ERS | 园豆:728 (小虾三级) | 2012-05-21 17:02
0

 PRINT @Num
 EXECUTE sp_executesql @Sql, @ParaDefinition, @Num = @Result OUT, @AllRoles = @InsertLogRoleName, @UE_SPM1 = @User_Account

你还没执行sql语句   输出当然是0了     你吧 PRINT @Num 放到最后试下

路边的油条 | 园豆:313 (菜鸟二级) | 2012-05-22 10:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册