Skip to content

Instantly share code, notes, and snippets.

@ststeiger
Last active September 3, 2015 14:30
Show Gist options
  • Select an option

  • Save ststeiger/c98aa9a9700d10f852b6 to your computer and use it in GitHub Desktop.

Select an option

Save ststeiger/c98aa9a9700d10f852b6 to your computer and use it in GitHub Desktop.
GetFlagDescription (SELECT/INSERT/UPDATE/DELETE)
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'dbo.fn_GetFlagDescription') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION dbo.fn_GetFlagDescription
GO
CREATE FUNCTION dbo.fn_GetFlagDescription(@flag int)
RETURNS varchar(400)
AS
BEGIN
DECLARE @vcRet varchar(400)
--Flag:
--SUM
--(
-- CASE
-- WHEN PRIVILEGE_TYPE = 'SELECT' THEN 1
-- WHEN PRIVILEGE_TYPE = 'INSERT' THEN 2
-- WHEN PRIVILEGE_TYPE = 'UPDATE' THEN 4
-- WHEN PRIVILEGE_TYPE = 'DELETE' THEN 8
-- ELSE 100
-- END
--) AS Flag
SET @vcRet = (
CASE @flag
WHEN 0 THEN 'N'
WHEN 1 THEN 'S'
WHEN 2 THEN 'I'
WHEN 3 THEN 'SI'
WHEN 4 THEN 'U'
WHEN 5 THEN 'SU'
WHEN 6 THEN 'IU'
WHEN 7 THEN 'SIU'
WHEN 8 THEN 'D'
WHEN 9 THEN 'SD'
WHEN 10 THEN 'ID'
WHEN 11 THEN 'SID'
WHEN 12 THEN 'UD'
WHEN 13 THEN 'SUD'
WHEN 14 THEN 'IUD'
WHEN 15 THEN 'SIUD'
END
);
SET @vcRet = REPLACE(REPLACE(REPLACE(REPLACE(@vcRet, 'D', 'DELETE '), 'S', 'SELECT '), 'U', 'UPDATE '), 'I', 'INSERT ')
SET @vcRet = LTRIM(RTRIM(@vcRet))
SET @vcRet = REPLACE(@vcRet, ' ', CHAR(13) + CHAR(10))
RETURN @vcRet;
END;
GO
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment