人员表:
T_Employee
EmpID,主键
LoginName,登陆名
Name,名称
RoleID,角色ID
TeamID,机构ID机构表:
T_Oraganiation
ID,自增,主键
BH,机构编号
OrganName,机构名称
ParentOrganID,上级机构IDT_Roles
RoleID,自增,主键
RoleName,角色名称T_LoanInfo
ID,自增,主键
ContractNO,合同号
EmployeeID,员工ID(T_Employee中的EmpID)
OrganID,机构ID(T_Oraganiation中的ID)
其中,T_Roles表中的RoleID对应T_Employee中的RoleID求一存储过程
在登陆用户时直接只显示出当前用户在T_LoanInfo中的信息
要求1:角色分为:系统管理员,信贷员,支行长
2:支行长可以察看自己行下边信贷员的信息(按机构ID的父子级节点来向下查看)
3:系统管理员不能查看信息
4:页面传过来的是登陆时的SESSION(EmpID)
T_Employee
EmpID,主键
LoginName,登陆名
Name,名称
RoleID,角色ID
TeamID,机构ID机构表:
T_Oraganiation
ID,自增,主键
BH,机构编号
OrganName,机构名称
ParentOrganID,上级机构IDT_Roles
RoleID,自增,主键
RoleName,角色名称T_LoanInfo
ID,自增,主键
ContractNO,合同号
EmployeeID,员工ID(T_Employee中的EmpID)
OrganID,机构ID(T_Oraganiation中的ID)
其中,T_Roles表中的RoleID对应T_Employee中的RoleID求一存储过程
在登陆用户时直接只显示出当前用户在T_LoanInfo中的信息
要求1:角色分为:系统管理员,信贷员,支行长
2:支行长可以察看自己行下边信贷员的信息(按机构ID的父子级节点来向下查看)
3:系统管理员不能查看信息
4:页面传过来的是登陆时的SESSION(EmpID)
drop proc sptest
gocreate proc sptest
(
@SESSION int
)
as
begin
declare @RoleName varchar(50), @TeamID int
select @RoleName = b.RoleName from T_Employee a join T_Roles b on a.RoleID = b.RoleID where a.EmpID = @SESSION if @RoleName = '支行长'
begin
with cte as
(
select id from T_Oraganiation where ID = @TeamID
union all
select id from T_Oraganiation a join cte b on a.ParentOrganID = b.id
)
select a.* from T_LoanInfo a join cte b on a.OrganID = b.id
end
else if @RoleName = '信贷员'
select * from T_LoanInfo where EmployeeID = @SESSION
else
select * from T_LoanInfo where 1=0
end
DROP TABLE T_Oraganiation
CREATE TABLE T_Oraganiation
(ID INT,BH INT,OrganName VARCHAR(20),ParentOrganID INT)
IF OBJECT_ID('T_Employee') IS NOT NULL
DROP TABLE T_Employee
CREATE TABLE T_Employee
(Empid INT,LoginName VARCHAR(20),NAME VARCHAR(20),RoleID INT,TeamID INT)IF OBJECT_ID('T_Roles') IS NOT NULL
DROP TABLE T_Roles
CREATE TABLE T_Roles
(RoleID INT,RoleName VARCHAR(20))IF OBJECT_ID('T_LoanInfo') IS NOT NULL
DROP TABLE T_LoanInfo
CREATE TABLE T_LoanInfo
(RoleID INT,ContractNO VARCHAR(20),EmployeeID INT,OrganID INT)DECLARE @EmpID INT
DECLARE @TeamID INT --找到机构ID
SELECT @TeamID=TeamID
FROM T_Employee WHERE EmpID = @EmpID--找到人员列表
SELECT EmpID
INTO #EmployeeList
FROM T_Employee
WHERE RoleID IN
(
SELECT @TeamID
UNION
SELECT ID
FROM T_Oraganiation
WHERE ParentOrganID=@TeamID
)
SELECT * FROM
T_LoanInfo
WHERE EmployeeID IN
(
SELECT * FROM #EmployeeList
)
DROP TABLE #EmployeeList
在关键字 'with' 附近有语法错误。
服务器: 消息 156,级别 15,状态 1,过程 sptest,行 21
在关键字 'else' 附近有语法错误。
服务器: 消息 156,级别 15,状态 1,过程 sptest,行 25
在关键字 'end' 附近有语法错误。