求存储过程的SQL语句。

DoDone 2003-11-26 03:56:29
USERS(USERID,USERNAME)
USER_ROLES(ROLEID,USERID)
ROLE(ROLEID,DESCRIPTION)
ROLE_PERMISSION(ROLEID,P_ID)
PERMISSION---菜单表(P_ID,URL,FID)

要求:
给定USERID和PERMISSION的FID,取得菜单。

create proc sp_GetPermissions
@userid int,@fid int
as
...
...全文
24 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
swiminfish_9999 2003-11-27
  • 打赏
  • 举报
回复
up
tmj 2003-11-27
  • 打赏
  • 举报
回复
up learn
DoDone 2003-11-27
  • 打赏
  • 举报
回复
就是用int呀
tjlxb2008 2003-11-26
  • 打赏
  • 举报
回复
不好意思我问一下,你的那个传入的参数的int格式的,在asp中传入时用的是什么格式啊
DoDone 2003-11-26
  • 打赏
  • 举报
回复
忘了说一句:一个用户可以多个角色;一个角色可以多个权限。
权限还有一个级别字段(数字大,级别高);即
USERA:ROLEA ROLEB (USERA可以有ROLEA和ROLEB的角色)
ROLEA:P_A P_B(1) (ROLEA可以有P_A和P_B的角色,其中P_B权限级别为1)
ROLEB: P_A P_B(2) P_C(1) (ROLEB可以有P_A、P_B和P_C的角色,其中P_B权限级别为2)

PERMISSION表中的记录为
1 P_A 0
2 P_B 1
3 P_C 1

现在:
DECLARE @USERIN INT
SET @USERIN =100
sp_GetPermissions(@USERIN ,1)返回的结果应该是
权限 级别
P_B 2
P_C 1

flystar2 2003-11-26
  • 打赏
  • 举报
回复
也可以这样写﹐速度可能会更快:
create proc sp_GetPermissions
@userid int,@fid int
as
Select p.*,c.DESCRIPTION,a.USERNAME
from USERS a,USER_ROLES b,ROLE c,ROLE_PERMISSION d,PERMISSION p
where a.USERID=b.USERID and b.ROLEID=c.ROLEID
and b.ROLEID=d.ROLEID and d.P_ID=p.P_ID

GO
txlicenhe 2003-11-26
  • 打赏
  • 举报
回复
create proc sp_GetPermissions
@userid int,@fid int
as

Select p.*,c.DESCRIPTION,e.username
from permission a
join role_permission b on a.p_id = b.p_id
join role c on b.roleid = c.roleid
join user_roles d on c.roleid = b.roleid
join users e on d.userid = e.userid
where e.userid = @userid
and a.f_id = @fid

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧