выполнить хранимые процедуры, возвращенные из таблицы базы данных - PullRequest
2 голосов
/ 07 марта 2012

Я работаю с SQL Server 2008

У меня есть таблица базы данных, в которой есть столбец, содержащий имя хранимой процедуры.

Я хочу запросить таблицу базы данных, которая возвращает списокимена хранимых процедур и их выполнение.

Хранимые процедуры похожи, все имеют выбранный статус.Данные, возвращаемые в этом операторе выбора, который я хочу вставить в таблицу базы данных.

Псевдокод выглядит следующим образом:

INSERT INTO MyTable
EXECUTE sp_executesql SELECT StoredProcedureName FROM Table

Любой, кто сможет помочь мне с правильным SQL для достижениявыше

Ответы [ 2 ]

1 голос
/ 07 марта 2012

Это почти то же самое, что и ответ @Coltech только с курсором.

    DECLARE @spname VARCHAR(200)
    DECLARE @sql VARCHAR(1000)

    DECLARE your_cursor CURSOR FOR 
    SELECT spname
    FROM yourTable;

    OPEN your_cursor;

    FETCH NEXT FROM your_cursor 
    INTO @spname;

    WHILE @@FETCH_STATUS = 0
    BEGIN
        SET @sql = 'EXEC ' + @spname

        execute sp_executesql @sql

        FETCH NEXT FROM your_cursor 
        INTO @spname;
    END
    CLOSE your_cursor;
1 голос
/ 07 марта 2012

sp_executesql принимает строку в юникоде, а не оператор tsql. Таким образом, вам необходимо выполнить вашу процедуру (ы) следующим образом:

execute sp_executesql 'execute ' + @storedprocedurename 

, которая будет выполнять одну процедуру.

Вам нужно будет написать какой-то итерационный процесс, чтобы заполнить переменную @storedprocedurename из исходной таблицы.

...