#sql #sql-server-2008 #stored-procedures
#sql #sql-server-2008 #хранимые процедуры
Вопрос:
У меня есть эта хранимая процедура, которая вызывает другую вторую хранимую процедуру, которая возвращает таблицу с 5 столбцами. Я вставляю результаты во временную таблицу в первой хранимой процедуре. Идея состоит в том, чтобы показать эту таблицу в отчете Crystal, поэтому мне нужна эта хранимая процедура для возврата временной таблицы.
Как я могу заставить ее возвращать таблицу с 5 столбцами и значениями??
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[paBltBuscarBoletasASA] @id_Asa int
-- Add the parameters for the stored procedure here
AS
DECLARE @Query int
CREATE TABLE #tablaTemporal (Numero_Pregunta varchar, Numero_Boleta int, Cultivo varchar, Numero_Siembra int, Detalle_Error varchar)
DECLARE miCursor 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 miCursor
FETCH NEXT FROM miCursor INTO @Query
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO #tablaTemporal(Numero_Pregunta, Numero_Boleta, Cultivo, Numero_Siembra, Detalle_Error) exec dbo.paBltMarcarErroresBoleta @Query
FETCH NEXT FROM miCursor INTO @Query
END
CLOSE miCursor
DEALLOCATE miCursor
Ответ №1:
Ну, наиболее очевидным решением является размещение в нижней части хранимой процедуры:
SELECT Numero_Pregunta, Numero_Boleta, Cultivo, Numero_Siembra, Detalle_Error
FROM #tablaTemporal
Это вернет данные сохраненному вызывающему процессу.
Комментарии:
1. 1: Фух… вы, должно быть, устали после обдумывания этого 😉
Ответ №2:
Почему это должно быть временным?
Могут ли данные таблицы просто обновляться каждый раз? Тогда вы не столкнетесь с проблемой уничтожения временной таблицы каждый раз, когда она выпадает из области видимости / контекста.
Комментарии:
1. Вы правы, как я могу вставить в постоянную таблицу?? Идея состоит в том, чтобы добавить каждую таблицу, возвращаемую вторым SP, в постоянную таблицу.