2010-01-09 7 views
5

Tengo dos procedimientos: dos grandes conjuntos de selecciones con varias sub-selecciones y uniones. Necesito resultados de unión de estos procedimientos y aún necesito que existan por separado.TSQL: resultados de unión de dos selects (¿procedimientos?)

Algo así:

if @Param = 1 Then 
    PROCEDURE1 
if @Param = 2 THEN 
    PROCEDURE2 
if @Param = 3 Then 
    PROCEDURE1 union PROCEDURE2 

He leído que es imposible tener la unión de los procedimientos y no puedo utilizar tablas temporales.

¿Alguna idea?

+0

Resultó que puedo usar una tabla temporal, por lo que es probablemente la mejor solución. Gracias por tus respuestas (¡todas!). Puedo usarlos con mis otros problemas :) – Gregi

Respuesta

7

Puede convertir los procedimientos en vistas.

O

Puede exec los procedimientos en una tabla temporal, y luego exec con el otro en la misma tabla temporal:

create table #sometable (table definition here) 

if @Param = 1 or @Param = 3 begin 
    insert #sometable exec PROCEDURE1 
end 

if @Param = 2 or @Param = 3 begin 
    insert #sometable exec PROCEDURE2 
end 

select * from #sometable 
+1

Si alguien está atascado porque no puede usar tablas temporales, también puede usar una variable de tabla. –

3

Usted podría:

1) Introducir el datos en una tabla temporal luego SELECCIONAR a partir de eso:

--Define #t here, with correct schema to match results returned by each sproc 
INSERT #t EXECUTE PROC1 
INSERT #t EXECUTE PROC2 
SELECT * FROM #t 

2) Apenas regrese 2 r esultsets del sproc y deja que tu código de llamada maneje 2 resultados

1

Sin el uso de tablas temporales solo hay otras dos maneras en las que se me ocurre.

  1. Convierta las s'procs en vistas, si es posible.

  2. Mueva la lógica en la cual proc llamar a su aplicación (si existe). Haga que ejecute cada proceso por separado y combine los resultados.

2

Hay varias maneras de manejar la situación:

  1. Table-Valued User Defined Functions (UDFs)
  2. Vistas
  3. Dynamic SQL
  4. tablas temporales

La pregunta carece de detalles concretos así que es difícil para recomendar o ne sobre otra, mucho menos proporcionar una respuesta adaptada. Es plausible que la lógica se pueda realizar en una sola consulta.

Cuestiones relacionadas