Add or Update Extended Property #SQL #MSSQL
CREATE PROCEDURE sp_addorupdateextendedproperty
@name_ sysname,
@value_ sql_variant = NULL,
@level0type_ varchar(128) = NULL,
@level0name_ sysname = NULL,
@level1type_ varchar(128) = NULL,
@level1name_ sysname = NULL,
@level2type_ varchar(128) = NULL,
@level2name_ sysname = NULL
AS
IF @level2name_ IS NULL
IF NOT EXISTS (SELECT NULL FROM SYS.EXTENDED_PROPERTIES WHERE [major_id] = OBJECT_ID(@level1name_) AND [name] = @name_ AND [minor_id] = 0)
EXECUTE sp_addextendedproperty @name = @name_, @value = @value_, @level0type = @level0type_, @level0name = @level0name_, @level1type = @level1type_, @level1name = @level1name_;
ELSE
EXECUTE sp_updateextendedproperty @name = @name_, @value = @value_, @level0type = @level0type_, @level0name = @level0name_, @level1type = @level1type_, @level1name = @level1name_;
ELSE
IF NOT EXISTS (SELECT NULL FROM SYS.EXTENDED_PROPERTIES WHERE [major_id] = OBJECT_ID(@level1name_) AND [name] = @name_ AND [minor_id] = (SELECT [column_id] FROM SYS.COLUMNS WHERE [name] = @level2name_ AND [object_id] = OBJECT_ID(@level1name_)))
EXECUTE sp_addextendedproperty @name = @name_, @value = @value_, @level0type = @level0type_, @level0name = @level0name_, @level1type = @level1type_, @level1name = @level1name_, @level2type = @level2type_, @level2name = @level2name_;
ELSE
EXECUTE sp_updateextendedproperty @name = @name_, @value = @value_, @level0type = @level0type_, @level0name = @level0name_, @level1type = @level1type_, @level1name = @level1name_, @level2type = @level2type_, @level2name = @level2name_;