检查某员工是否在系统中操作单据
2011-10-11 09:24
253 查看
/*
说明:
1.如果员工@empl_no在系统中有操作过数据,则此员工不能删除
2.判断是否操作过数据,通过变量表@t可以新增其他字段
drop proc Proc_tbEmployee_delcheck
declare @sign int
exec Proc_tbEmployee_delcheck '003',@sign out
select @sign
*/
create proc Proc_tbEmployee_delcheck
@empl_no varchar(50),@sign int out
as
set nocount on
declare @maxid int,@j int,@field varchar(30)
declare @t table(id int identity(1,1),field varchar(30))
insert into @t(field)
select 'empl_no'
union all select 'create_man'
union all select 'edit_man'
select @maxid=max(id) from @t
declare @flag int,@name varchar(100),@i int,@condition nvarchar(50)
declare @sql nvarchar(1000)
declare @cur cursor
set @flag=0
set @cur = cursor for select b.name
from syscolumns a
inner join sysobjects b on a.id=b.id
where b.xtype='u' and b.name not in('tbRightMember','tbEmployee','tbLog','tbRight','tbRightAdd')
and exists(select 1 from syscolumns c where a.id=c.id and a.name in(select field from @t))
open @cur
fetch next from @cur into @name
while @@fetch_status=0 and @flag=0
begin
if exists(select 1 from syscolumns where id=object_id(@name) and name='deleted')
set @condition=' and deleted=0 '
else
set @condition=''
set @j=1
while @j<=@maxid
begin
select @field=field from @t where id=@j
if exists(select 1 from syscolumns where id=object_id(@name) and
name=@field)
begin
set @sql='select @p=count(1) from '+@name+' where
'+@field+'='''+@empl_no+''''+@condition
exec sp_executesql @sql,N'@p as int output',@i output
if isnull(@i,0)>0
begin
set @flag=1
break
end
end
set @j=@j+1
end
fetch next from @cur into @name
end
close @cur
deallocate @cur
set @sign=@flag
GO
说明:
1.如果员工@empl_no在系统中有操作过数据,则此员工不能删除
2.判断是否操作过数据,通过变量表@t可以新增其他字段
drop proc Proc_tbEmployee_delcheck
declare @sign int
exec Proc_tbEmployee_delcheck '003',@sign out
select @sign
*/
create proc Proc_tbEmployee_delcheck
@empl_no varchar(50),@sign int out
as
set nocount on
declare @maxid int,@j int,@field varchar(30)
declare @t table(id int identity(1,1),field varchar(30))
insert into @t(field)
select 'empl_no'
union all select 'create_man'
union all select 'edit_man'
select @maxid=max(id) from @t
declare @flag int,@name varchar(100),@i int,@condition nvarchar(50)
declare @sql nvarchar(1000)
declare @cur cursor
set @flag=0
set @cur = cursor for select b.name
from syscolumns a
inner join sysobjects b on a.id=b.id
where b.xtype='u' and b.name not in('tbRightMember','tbEmployee','tbLog','tbRight','tbRightAdd')
and exists(select 1 from syscolumns c where a.id=c.id and a.name in(select field from @t))
open @cur
fetch next from @cur into @name
while @@fetch_status=0 and @flag=0
begin
if exists(select 1 from syscolumns where id=object_id(@name) and name='deleted')
set @condition=' and deleted=0 '
else
set @condition=''
set @j=1
while @j<=@maxid
begin
select @field=field from @t where id=@j
if exists(select 1 from syscolumns where id=object_id(@name) and
name=@field)
begin
set @sql='select @p=count(1) from '+@name+' where
'+@field+'='''+@empl_no+''''+@condition
exec sp_executesql @sql,N'@p as int output',@i output
if isnull(@i,0)>0
begin
set @flag=1
break
end
end
set @j=@j+1
end
fetch next from @cur into @name
end
close @cur
deallocate @cur
set @sign=@flag
GO
相关文章推荐
- N点虚拟系统出现 “操作MICROSOFT-FTP发生错误 ,请检查是否安装或标识符错误”解决方案
- iOS通讯录操作封装(添加联系人、检查号码是否存在)
- ios 文件操作 检查文件是否存在
- uap用友nc开发选择业务单元提示:请检查该单据是否定义单据号规则
- 检查SAP系统中货币是否存在
- ADO.NET笔记——使用Command执行增删改操作,通过判断ExecuteNonQuery()返回值检查是否操作成功
- C#检查系统是否安装打印机
- 关于serv-u公网访问出现“打开ftp服务器上的文件夹时发生错误。请检查是否有权限访问该文件夹。详细信息:操作超时”的解决方法
- 如何检查系统是否支持Zend Optimizer
- linux系统使用arp-scan检查是否存在IP地址冲突
- Setup Factory使用——安装包进行安装前检查系统是否安装了其它相关系统
- 新装系统5ucms进后台报错-数据库链接出错,请检查数据库路径是否正确(Inc/Conn.asp)!解决办法
- oracle(PL/SQL)表操作:创建表时检查数据库是否存在该表,若存在删除再创建
- 关于serv-u公网访问出现“打开ftp服务器上的文件夹时发生错误。请检查是否有权限访问该文件夹。详细信息:操作超时”的解决方法
- Script:检查数据库当前是否有备份操作在执行中
- 如何检查系统是否支持Zend Optimizer
- Linux安装MySQL的两种方法{linux系统mysql安装之前需要先检查是否已经安装,把已经有的库文件卸载掉,否则会出现覆盖错误}
- 检查订单是否开了系统发票
- 关于serv-u公网访问出现“打开ftp服务器上的文件夹时发生错误。请检查是否有权限访问该文件夹。详细信息:操作超时”的解决方法