SQL - Stored con Tabla Temporal

 
Vista:

Stored con Tabla Temporal

Publicado por Eugenia (8 intervenciones) el 18/09/2009 22:49:38
Hola a todos!
Tengo que crear un Stored Procedure (SP) donde pueda crear una tabla temporal que me muestre solo algunos de los datos de una de mis tablas de la base de datos.
No entiendo mucho como hacerlo, lo que tengo en el stored es éste código. Luego llamo al SP desde el Vb. No sé si lo estoy haciendo bien, ya que fui recopilando info de internet pero no funciona ¿Qué es lo que estoy haciendo mal?

CREATE PROCEDURE UP_INS_Profesional
@Codap1 varchar,
@Codap2 varchar

AS
set nocount on
CREATE TABLE #TablaTemp (CODAP nvarchar, CODCAB nvarchar, TOTAL integer)
INSERT INTO #TablaTemp
SELECT CODAP,CODCAB, sum(TOTAL) FROM TABLAPROFESIONALES
GROUP BY CODAP, CODCAB
HAVING (CODAP>=(@Codap1)) OR (CODAP<=(@Codap2))
order by CODAP,CODCAB

SELECT * FROM #TablaTemp

Gracias por su ayuda!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de RICKRAF

SP Con tablas temporales

Publicado por RICKRAF (2 intervenciones) el 19/09/2009 03:58:58
Hola Eugenia, buenas noches.... mira en realidad esta bien tu script, lo que devuelve el Store Procedure es una lista de una tabla temporal, sin embargo, para una mejor optimizacion te sugeriria crear variables de tipo tabla.......

tu script quedaria asi...

CREATE PROCEDURE UP_INS_Profesional
@Codap1 varchar,
@Codap2 varchar
AS
set nocount on
declare
@ltp_temporal table (CODAP nvarchar, CODCAB nvarchar, TOTAL integer)

INSERT INTO @ltp_temporal
SELECT CODAP,CODCAB, sum(TOTAL) FROM TABLAPROFESIONALES
GROUP BY CODAP, CODCAB
HAVING (CODAP>=(@Codap1)) OR (CODAP<=(@Codap2))
order by CODAP,CODCAB

SELECT * FROM @ltp_temporal

La diferencia es que la duración de la variable tabla solo es dentro del Procedimientos Almacenado en cambio si tu creas una tabla temporal, esa tabla estará presente mientras dure la conexión actual, si se cierra la conexión, la tabla temporal se elimina y liberas recursos.

Espero poder haberte ayudado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SP Con tablas temporales

Publicado por Eugenia (8 intervenciones) el 19/09/2009 16:23:43
Gracias por tu ayuda! La verdad es que todavía no sabía bien como utilizar variables de Tabla. He aprendido algo mas!.
Ahora tengo otra duda:
En la misma tabla temporal debo actualizar dos campos, llamados Descripcion1 y Descripcion2, con campos de otra tabla existente llamada DETALLES.
Estos campos son descripciones de CODAP y CODCAB.
Osea que mi tabla final debería traer:

CODAP
CODCAB
TOTAL
(y según esos campos)
DESCRIPCION1 (seria la descripcion de CODAP)
DESCRIPCION2 (seria la descripcion de CODCAB)

Este es mi store con variable, pero no se donde debería agregar estos 2 campos que me faltan

CREATE PROCEDURE UP_INS_Profesional
@Codap1 varchar,
@Codap2 varchar
AS
set nocount on
declare
@ltp_temporal table (CODAP nvarchar, CODCAB nvarchar, TOTAL integer)

INSERT INTO @ltp_temporal
SELECT CODAP,CODCAB, sum(TOTAL) FROM TABLAPROFESIONALES
GROUP BY CODAP, CODCAB
HAVING (CODAP>=(@Codap1)) OR (CODAP<=(@Codap2))
order by CODAP,CODCAB

SELECT * FROM @ltp_temporal

Gracias!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar