请高手帮忙看看这个存储过程的问题!!十万火急!!谢谢!!

jimmykelvin jimmykelvin 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
ALTER PROCEDURE [dbo].[paysliprole]
(@emp_code varchar(500),
@name varchar(500),
@sffp varchar(500),
@begin varchar(500),
@end varchar(500),
@userid varchar(500)
)

AS
BEGIN
SET IMPLICIT_TRANSACTIONS off

declare @sql varchar(4000),
@where varchar(4000)
set @emp_code=case when @emp_code='' then '' else 'and emp_code like ''%'+@emp_code+'%''' end
set @name=case when @name='' then '' else 'and (chn_name like ''%'+@name+'%'' or eng_name like ''%'+@name+'%'')' end
set @sffp=case when @sffp='false' or @sffp='' then 'and role_id='''+'no'+'''' else '' end
set @userid='and emp_id in (select emp_id from _'+@userid+')'
set @where=@emp_code+@name+@sffp+@userid
set @sql='select * from (select row_number() over(order by emp_code) rownumber,* from v_payslip_role where1=1 '''+@where+''') a where rownumber between @begin and @end)'
print @emp_code
print @name
print @sffp
print @userid
print @begin
print @end
print @where
print @sql

exec (@sql)

END


现在有三个问题,第一是@where老是拼出来会带个引号的,第二是@begin和@end的值赋不到语句中去!
第三个就是运行存储过程的时候会报错
请高手帮我看看,是哪里写的有问题。。谢谢了。。十万火急啊!!
...全文

相关推荐

评论 7
收藏 已收藏
分享
返回顶部
jimmykelvin
疑难问题 22,298 成员 121,727 内容