Вложенность хранимых процедур - PullRequest
0 голосов
/ 27 октября 2011

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

Как я могу это сделать?

CREATE PROCEDURE [dbo].[paBltBuscarBoletasASA] @id_Asa int  
AS
DECLARE @Query int, @Contador int 
SET @Contador = 0
BEGIN
      SET NOCOUNT ON;  
      SET @Query = (
                SELECT 
                    localizacion.c_Fk_IdBoleta
                FROM 
                    Blt_Boleta as boleta, Fnc_Localizacion as localizacion
                WHERE 
                    boleta.c_Pk_IdBoleta = localizacion.c_Fk_IdBoleta AND
                    localizacion.si_CodAsa = @id_Asa) //This query give the list of Codes. For example 45550711, 40480711, 80110711... etc

    exec dbo.paBltMarcarErroresBoleta @Query //And here I need send one by one that list of Codes
END

Ответы [ 2 ]

1 голос
/ 27 октября 2011

Вы можете добавить скалярную функцию и вызвать ее в своем запросе, например:

SELECT 
    localizacion.c_Fk_IdBoleta,
    dbo.checkCode(localizacion.c_Fk_IdBoleta) as Check
FROM 
    Blt_Boleta as boleta, Fnc_Localizacion as localizacion
WHERE 
    boleta.c_Pk_IdBoleta = localizacion.c_Fk_IdBoleta AND
    localizacion.si_CodAsa = @id_Asa
0 голосов
/ 27 октября 2011

Объявите CURSOR для запроса, который вы устанавливаете равным @Query, а затем вставьте в переменную каждое последующее значение в цикле WHILE @@ FETCH_STATUS = 0. Затем передайте переменную @Query во вторую хранимую процедуру, как вы это делаете в настоящее время. Вот пример:

DECLARE myCursor CURSOR FOR
SELECT localizacion.c_Fk_IdBoleta
FROM Blt_Boleta as boleta, Fnc_Localizacion as localizacion
WHERE boleta.c_Pk_IdBoleta = localizacion.c_Fk_IdBoleta AND 
localizacion.si_CodAsa = @id_Asa

OPEN myCursor

FETCH NEXT FROM myCursor INTO @Query

WHILE @@FETCH_STATUS = 0
BEGIN
    exec dbo.paBltMarcarErroresBoleta @Query
    //do additional processing

FETCH NEXT FROM myCursor INTO @Query
END

CLOSE myCursor
DEALLOCATE myCursor

Дополнительная помощь курсора: http://msdn.microsoft.com/en-us/library/ms180169.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...