USP_RESTOREALLINDEXEEXTENDEDPROPERTIES_FORTABLE

Parameters

Parameter Parameter Type Mode Description
@EXTENDEDPROPERTY EXTENDEDPROPERTYTABLETYPE IN

Definition

Copy

create procedure bbdw.USP_RESTOREALLINDEXEEXTENDEDPROPERTIES_FORTABLE(
    @EXTENDEDPROPERTY EXTENDEDPROPERTYTABLETYPE readonly
)
as begin
    declare @SQL nvarchar(max) = '
        exec sys.sp_addextendedproperty 
            @NAME=@NAME, 
            @VALUE=@VALUE, 
            @LEVEL0TYPE=@LEVEL0TYPE,
            @LEVEL0NAME=@LEVEL0NAME,
            @LEVEL1TYPE=@LEVEL1TYPE,
            @LEVEL1NAME=@LEVEL1NAME,
            @LEVEL2TYPE=@LEVEL2TYPE,
            @LEVEL2NAME=@LEVEL2NAME;';

    declare @NAME sysname,
        @VALUE sql_variant,
        @LEVEL0TYPE sysname,
        @LEVEL0NAME sysname,
        @LEVEL1TYPE sysname,
        @LEVEL1NAME sysname,
        @LEVEL2TYPE sysname,
        @LEVEL2NAME sysname;

    declare EXTENDEDPROPERTYCURSOR cursor local fast_forward for
        select
            EP.NAME,
            EP.VALUE,
            EP.LEVEL0TYPE,
            EP.LEVEL0NAME,
            EP.LEVEL1TYPE,
            EP.LEVEL1NAME,
            EP.LEVEL2TYPE,
            EP.LEVEL2NAME
        from 
            @EXTENDEDPROPERTY EP

    open EXTENDEDPROPERTYCURSOR;
    fetch next from EXTENDEDPROPERTYCURSOR into @NAME,
        @VALUE,
        @LEVEL0TYPE,
        @LEVEL0NAME,
        @LEVEL1TYPE,
        @LEVEL1NAME,
        @LEVEL2TYPE,
        @LEVEL2NAME;

    while @@FETCH_STATUS = 0
    begin
        exec sp_executesql 
            @SQL, N'@NAME sysname,
                @VALUE sql_variant,
                @LEVEL0TYPE sysname,
                @LEVEL0NAME sysname,
                @LEVEL1TYPE sysname,
                @LEVEL1NAME sysname,
                @LEVEL2TYPE sysname,
                @LEVEL2NAME sysname'
            @NAME,
            @VALUE,
            @LEVEL0TYPE,
            @LEVEL0NAME,
            @LEVEL1TYPE,
            @LEVEL1NAME,
            @LEVEL2TYPE,
            @LEVEL2NAME;

        fetch next from EXTENDEDPROPERTYCURSOR into @NAME,
            @VALUE,
            @LEVEL0TYPE,
            @LEVEL0NAME,
            @LEVEL1TYPE,
            @LEVEL1NAME,
            @LEVEL2TYPE,
            @LEVEL2NAME;
    end

    close EXTENDEDPROPERTYCURSOR;
    deallocate EXTENDEDPROPERTYCURSOR;

end