Кто-нибудь знает, как я могу проверить, существует ли уже роль в базе данных Sybase ... У меня есть имя роли
Есть таблица sysroles, но нет столбца имени!
select * from sysroles
SELECT HAS_ROLE ("role_name", 1) сообщает, имеет ли пользователь, выполняющий сегмент кода, роль, а не существует ли эта роль. Конечно, вы должны знать о контексте БД.
Если вы собираетесь использовать таблицы sys, вам нужно взглянуть на документ (PDF, не онлайн, который можно загрузить), диаграмму таблицы (показывает отношения) и привыкнуть к ним. Таблицы практически полностью нормализованы.
<code> -- Check if role exists in server SELECT [RolesInSvr] = svr.name FROM master..syssrvroles WHERE name = "role_name"<br> -- Check if role exists in db SELECT [RolesInDb] = svr.name FROM master..syssrvroles svr, sysroles db WHERE svr.srid = db.id AND svr.name = "role_name"<br> -- 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..syssrvroles svr, sysroles db WHERE svr.srid = db.id
Посмотрите на proc_role ("role_name") (теперь не рекомендуется has_role) или role_id ("role_name") .