israel-gs
5/16/2019 - 3:47 PM

Add or Update Extended Property #SQL #MSSQL

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_;