从存储过程返回表

时间:2011-10-27 14:56:59

标签: sql sql-server-2008 stored-procedures

我有这个存储过程调用其他第二个存储过程,它返回一个包含5列的表。我将结果插入第一个存储过程中的临时表。我的想法是在Crystal Report中显示此表,因此我需要此存储过程来返回临时表。

如何让它返回包含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

2 个答案:

答案 0 :(得分:3)

最明显的解决方案是放在存储过程的底部:

SELECT Numero_Pregunta, Numero_Boleta, Cultivo, Numero_Siembra, Detalle_Error
FROM   #tablaTemporal

这会将数据返回给存储的proc调用者。

答案 1 :(得分:0)

为什么它必须是暂时的?

每次都可以简单地刷新表格数据吗?然后,每次它超出范围/上下文时,都不会遇到临时表被销毁的问题。