请高手帮忙看看这个存储过程的问题!!十万火急!!谢谢!!
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的值赋不到语句中去!
第三个就是运行存储过程的时候会报错
请高手帮我看看,是哪里写的有问题。。谢谢了。。十万火急啊!!
(@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的值赋不到语句中去!
第三个就是运行存储过程的时候会报错
请高手帮我看看,是哪里写的有问题。。谢谢了。。十万火急啊!!
...全文
相关推荐
js中!和!!的区别与用法
`,即`!!`,其作用就有所不同了。`!!`通常被用来进行严格布尔值转换,它的主要用途是将任何值转换为`true`或`false`,而不考虑其原始数据类型。
信息作业请不要下载!!
信息作业请不要下载!!
oracle存储过程编译错误问题
**权限问题**:编译存储过程需要相应的权限。如果用户没有足够的权限创建或修改存储过程,编译会失败。检查用户的角色和权限设置。7. **依赖性问题**:存储过程可能依赖于其他存储过程、包或函数。
DisneyDemo:这只是一个演示!! 请不要分叉
迪士尼演示这仅用于一个非常简单的演示!! 请不要分叉。 这需要从谷歌设置 ChromeDriver。 您可以下载它,解压缩它并将其添加到您的路径中。 它应该与 Apache Maven 一起使用。
firebird存储过程
在使用`isql`创建存储过程时,由于分号通常用于结束语句,所以需要使用`SET TERM`命令来指定其他字符作为语句结束的标志。例如,`SET TERM !! ;`设置“!!”


疑难问题
