如何检查 Sybase 中是不是存在角色
Posted
技术标签:
【中文标题】如何检查 Sybase 中是不是存在角色【英文标题】:How to check if a role exists in Sybase如何检查 Sybase 中是否存在角色 【发布时间】:2011-05-05 03:43:53 【问题描述】:任何人都知道如何检查 Sybase 数据库中是否已存在角色...我知道角色的名称
有一个 sysroles 表,但没有 name 列!
select * from sysroles
【问题讨论】:
【参考方案1】:查看proc_role("role_name")(现已折旧为 has_role)或role_id("role_name")。
【讨论】:
【参考方案2】:SELECT HAS_ROLE("role_name", 1) 告诉您执行代码段的用户是否具有角色,而不是角色是否存在。当然,您必须了解数据库上下文。
如果你要使用sys表,你需要看一下doco(PDF,不是在线的,可以下载),表图(显示关系),并习惯它们。表格几乎完全标准化。
-- Check if role exists in server
SELECT [RolesInSvr] = svr.name
FROM master..sys-s-rvroles svr
WHERE name = "role_name"
-- Check if role exists in db
SELECT [RolesInDb] = svr.name
FROM master..sys-s-rvroles svr,
sysroles db
WHERE svr.srid = db.id
AND svr.name = "role_name"
-- List roles in db
SELECT [RolesInDb] = svr.name,
[Locked] = CASE svr.status & 2
WHEN 2 THEN "Locked"
ELSE CHAR(0)
END
[Expired] = CASE svr.status & 4
WHEN 4 THEN "Expired"
ELSE CHAR(0)
END
FROM master..sys-s-rvroles svr,
sysroles db
WHERE svr.srid = db.id
【讨论】:
以上是关于如何检查 Sybase 中是不是存在角色的主要内容,如果未能解决你的问题,请参考以下文章