存储过程动态 where 子句,从变量中获取值
本文关键字:变量 获取 动态 where 子句 存储过程 | 更新日期: 2023-09-27 18:32:48
我正在使用sql server,c#,asp.net。我正在做一个项目,其中菜单根据用户的权限从数据库中动态显示。截至目前,这是我的存储过程,
Create Proc spGetMenuData
as
Begin
Select * from tblMenu1
End
我的数据库上有一个用户表、一个角色表和菜单表。用户:用户标识、用户名、通行证、角色标识角色:角色 ID、名称(管理员、用户)菜单:菜单ID,名称,网址,角色ID,用户ID或菜单ID,名称,网址,角色ID(如果更合适,请告诉我)现在,我想要的是获取用户 id 和他的角色 id 来检查菜单。我可以将用户 ID 存储到程序中的变量中,并将其传递给我的存储过程。喜欢:
Create Proc spGetMenuData
as
Begin
Select * from tblMenu1 //(WHERE tblMenu1.userid = useridfromthevariable and tblMenu1.roleid = useridfromthevariable's roleid)
End
请帮助我,我只是一个初学者。提前感谢!
以下是我要做的:
用户表:user_id、用户名、通行证、role_id
角色表:role_id、role_name
Menu_Roles表:role_id、menu_id
菜单表:menu_id、名称、网址
然后,我将指定菜单属于一个角色,并具有属于用户的角色。
然后,要获取给定用户的menu_id、名称和 url,请执行以下操作:
CREATE PROCEDURE getMenus
@someUserName
AS
SET NOCOUNT ON;
SELECT menu_id, name, url FROM menus WHERE menu_id
IN (select menu_id from users
JOIN menu_roles ON users.role_id=menu_roles.role_id WHERE username=@someUserName)
GO