人员表:
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)

解决方案 »

  1.   

    未经测试,你试一下,是不是这样if object_id('sptest','P') is not null
    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
      

  2.   

    IF OBJECT_ID('T_Oraganiation') IS NOT NULL 
    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
      

  3.   

    服务器: 消息 156,级别 15,状态 1,过程 sptest,行 13
    在关键字 'with' 附近有语法错误。
    服务器: 消息 156,级别 15,状态 1,过程 sptest,行 21
    在关键字 'else' 附近有语法错误。
    服务器: 消息 156,级别 15,状态 1,过程 sptest,行 25
    在关键字 'end' 附近有语法错误。
      

  4.   

    用啥储存过程啊,使用linq的话让你感觉什么叫爽!话说来没钱无力