tablas temporales

19/05/2004 - 19:29 por news.microsoft.com | Informe spam
Hola, tengo un SP que genera una tabla temporal, la cual se ejecuta bien en
SQL QUERY ANALIZER, pero al tratar de ejecutarla a traves a ASP me indica
que la tabla resultado esta cerrada,

La idea es crear una tabla resumen de tres tablas

Alguna sugerencia

Codigo SP
CREATE PROCEDURE pa_control_ppto2
@per as varchar(5),
@ses as varchar(5)
AS

select numproyecto,lineaInversion,nombre,Montoinicial,0 as comite,0 as
subcomite,arrastre,0 as saldo,0 as sesionActual,0 as saldoTotal
into #paso from t_lineasdeInversiones where left(lineaInversion,4)=@per
update #paso set comite=A.total from (select lineaInversion,sum(monto)as
total from t_aprobado_comite group by lineaInversion) A
where a.lineaInversion=#paso.lineaInversion

update #paso set subcomite=A.subcomite from (SELECT linea, SUM(inversion) AS
subcomite FROM dbo.Cerrar_agenda
WHERE (estado = 'Aprobada')GROUP BY linea) A
where a.linea=#paso.lineaInversion

update #paso set sesionActual=A.actual from (SELECT
cabecera_ficha.lineaInversion,SUM(dbo.agenda.costos) AS actual FROM
dbo.agenda INNER JOIN
dbo.cabecera_ficha ON dbo.agenda.ficha dbo.cabecera_ficha.idFicha
WHERE (dbo.agenda.agendado = 1 and periodo=@per and sesion=@ses)
GROUP BY dbo.cabecera_ficha.lineaInversion) A
where #paso.lineaInversion=A.lineaInversion

update #paso set
saldo=comite-subcomite-arrastre,saldoTotal=comite-subcomite-arrastre-sesionA
ctual

select * from #paso


GO

Preguntas similare

Leer las respuestas

#1 Andy
19/05/2004 - 21:05 | Informe spam
al comienzo del sp coloca
set nocount on
al final del sp
set nocount off

para que no te traiga los resultados de las filas afectadas.

"news.microsoft.com" escribió en el mensaje
news:OM%
Hola, tengo un SP que genera una tabla temporal, la cual se ejecuta bien


en
SQL QUERY ANALIZER, pero al tratar de ejecutarla a traves a ASP me indica
que la tabla resultado esta cerrada,

La idea es crear una tabla resumen de tres tablas

Alguna sugerencia

Codigo SP
CREATE PROCEDURE pa_control_ppto2
@per as varchar(5),
@ses as varchar(5)
AS

select numproyecto,lineaInversion,nombre,Montoinicial,0 as comite,0 as
subcomite,arrastre,0 as saldo,0 as sesionActual,0 as saldoTotal
into #paso from t_lineasdeInversiones where left(lineaInversion,4)=@per
update #paso set comite=A.total from (select lineaInversion,sum(monto)as
total from t_aprobado_comite group by lineaInversion) A
where a.lineaInversion=#paso.lineaInversion

update #paso set subcomite=A.subcomite from (SELECT linea, SUM(inversion)


AS
subcomite FROM dbo.Cerrar_agenda
WHERE (estado = 'Aprobada')GROUP BY linea) A
where a.linea=#paso.lineaInversion

update #paso set sesionActual=A.actual from (SELECT
cabecera_ficha.lineaInversion,SUM(dbo.agenda.costos) AS actual FROM
dbo.agenda INNER JOIN
dbo.cabecera_ficha ON dbo.agenda.ficha > dbo.cabecera_ficha.idFicha
WHERE (dbo.agenda.agendado = 1 and periodo=@per and sesion=@ses)
GROUP BY dbo.cabecera_ficha.lineaInversion) A
where #paso.lineaInversion=A.lineaInversion

update #paso set



saldo=comite-subcomite-arrastre,saldoTotal=comite-subcomite-arrastre-sesionA
ctual

select * from #paso


GO


Respuesta Responder a este mensaje
#2 Maxi
19/05/2004 - 21:08 | Informe spam
Hola, la tabla deberias definirla como global!! o sea ## en lugar de #, esto
hara que la misma dure mientras la conexion este viva y no mientras el Store
lo este.

Saludete


Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"news.microsoft.com" escribió en el mensaje
news:OM%
Hola, tengo un SP que genera una tabla temporal, la cual se ejecuta bien


en
SQL QUERY ANALIZER, pero al tratar de ejecutarla a traves a ASP me indica
que la tabla resultado esta cerrada,

La idea es crear una tabla resumen de tres tablas

Alguna sugerencia

Codigo SP
CREATE PROCEDURE pa_control_ppto2
@per as varchar(5),
@ses as varchar(5)
AS

select numproyecto,lineaInversion,nombre,Montoinicial,0 as comite,0 as
subcomite,arrastre,0 as saldo,0 as sesionActual,0 as saldoTotal
into #paso from t_lineasdeInversiones where left(lineaInversion,4)=@per
update #paso set comite=A.total from (select lineaInversion,sum(monto)as
total from t_aprobado_comite group by lineaInversion) A
where a.lineaInversion=#paso.lineaInversion

update #paso set subcomite=A.subcomite from (SELECT linea, SUM(inversion)


AS
subcomite FROM dbo.Cerrar_agenda
WHERE (estado = 'Aprobada')GROUP BY linea) A
where a.linea=#paso.lineaInversion

update #paso set sesionActual=A.actual from (SELECT
cabecera_ficha.lineaInversion,SUM(dbo.agenda.costos) AS actual FROM
dbo.agenda INNER JOIN
dbo.cabecera_ficha ON dbo.agenda.ficha > dbo.cabecera_ficha.idFicha
WHERE (dbo.agenda.agendado = 1 and periodo=@per and sesion=@ses)
GROUP BY dbo.cabecera_ficha.lineaInversion) A
where #paso.lineaInversion=A.lineaInversion

update #paso set



saldo=comite-subcomite-arrastre,saldoTotal=comite-subcomite-arrastre-sesionA
ctual

select * from #paso


GO







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.676 / Virus Database: 438 - Release Date: 05/05/2004
Respuesta Responder a este mensaje
#3 Javier Loria
19/05/2004 - 23:36 | Informe spam
Hola:
En este caso es mucho mejor no usar la Tabla Temporal, podrias probar el
siguiente codigo sin probar:
==SELECT LineaInv.numproyecto
, LineaInv.lineaInversion
, LineaInv.nombre
, LineaInv.Montoinicial
, Comite1.Total AS comite
, AgendaCerrada1.subcomite AS subcomite
, LineaInv.arrastre
, (Comite1.Total
- AgendaCerrada1.subcomite
- LineaInv.arrastre) AS saldo
, SesionActual1.Actual as sesionActual
, (Comite1.Total
- AgendaCerrada1.subcomite
- LineaInv.arrastre
- SesionActual1.Actual) AS saldoTotal
FROM t_lineasdeInversiones AS LineaInv
JOIN (SELECT lineaInversion
, SUM(monto) as Total
FROM t_aprobado_comite
GROUP BY lineaInversion) AS Comite1
ON LineaInv.lineaInversion=Comite1.lineaInversion
JOIN (SELECT linea
, SUM(inversion) AS subcomite
FROM dbo.Cerrar_agenda
WHERE (estado = 'Aprobada')
GROUP BY linea) as AgendaCerrada1
ON LineaInv.lineaInversion=AgendaCerrada1.lineaInversion
JOIN (SELECT cabecera_ficha.lineaInversion
, SUM(dbo.agenda.costos) AS actual
FROM dbo.agenda
INNER JOIN dbo.cabecera_ficha
ON dbo.agenda.ficha = dbo.cabecera_ficha.idFicha
WHERE (dbo.agenda.agendado = 1
AND periodo=@per and sesion=@ses)
GROUP BY dbo.cabecera_ficha.lineaInversion) AS SesionActual1
ON LineaInv.lineaInversion= SesionActual1.lineaInversion
WHERE LEFT(lineaInversion,4)=@per

==Espero te funcione


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

news.microsoft.com escribio:
Hola, tengo un SP que genera una tabla temporal, la cual se ejecuta
bien en SQL QUERY ANALIZER, pero al tratar de ejecutarla a traves a
ASP me indica que la tabla resultado esta cerrada,

La idea es crear una tabla resumen de tres tablas

Alguna sugerencia

Codigo SP
CREATE PROCEDURE pa_control_ppto2
@per as varchar(5),
@ses as varchar(5)
AS

select numproyecto,lineaInversion,nombre,Montoinicial,0 as comite,0 as
subcomite,arrastre,0 as saldo,0 as sesionActual,0 as saldoTotal
into #paso from t_lineasdeInversiones where
left(lineaInversion,4)=@per update #paso set comite=A.total from
(select lineaInversion,sum(monto)as total from t_aprobado_comite
group by lineaInversion) A
where a.lineaInversion=#paso.lineaInversion

update #paso set subcomite=A.subcomite from (SELECT linea,
SUM(inversion) AS subcomite FROM dbo.Cerrar_agenda
WHERE (estado = 'Aprobada')GROUP BY linea) A
where a.linea=#paso.lineaInversion

update #paso set sesionActual=A.actual from (SELECT
cabecera_ficha.lineaInversion,SUM(dbo.agenda.costos) AS actual FROM
dbo.agenda INNER JOIN
dbo.cabecera_ficha ON dbo.agenda.ficha > dbo.cabecera_ficha.idFicha
WHERE (dbo.agenda.agendado = 1 and periodo=@per and sesion=@ses)
GROUP BY dbo.cabecera_ficha.lineaInversion) A
where #paso.lineaInversion=A.lineaInversion

update #paso set



saldo=comite-subcomite-arrastre,saldoTotal=comite-subcomite-arrastre-sesionA
ctual

select * from #paso


GO
Respuesta Responder a este mensaje
#4 jtorrej
20/05/2004 - 00:53 | Informe spam
Efectivamente era eso lo que me faltaba

gracias :-)

Tiene algun inconveniente trabajar con tablas temporales ?



"Andy" escribió en el mensaje
news:
al comienzo del sp coloca
set nocount on
al final del sp
set nocount off

para que no te traiga los resultados de las filas afectadas.

"news.microsoft.com" escribió en el mensaje
news:OM%
> Hola, tengo un SP que genera una tabla temporal, la cual se ejecuta bien
en
> SQL QUERY ANALIZER, pero al tratar de ejecutarla a traves a ASP me


indica
> que la tabla resultado esta cerrada,
>
> La idea es crear una tabla resumen de tres tablas
>
> Alguna sugerencia
>
> Codigo SP
> CREATE PROCEDURE pa_control_ppto2
> @per as varchar(5),
> @ses as varchar(5)
> AS
>
> select numproyecto,lineaInversion,nombre,Montoinicial,0 as comite,0 as
> subcomite,arrastre,0 as saldo,0 as sesionActual,0 as saldoTotal
> into #paso from t_lineasdeInversiones where left(lineaInversion,4)=@per
> update #paso set comite=A.total from (select lineaInversion,sum(monto)as
> total from t_aprobado_comite group by lineaInversion) A
> where a.lineaInversion=#paso.lineaInversion
>
> update #paso set subcomite=A.subcomite from (SELECT linea,


SUM(inversion)
AS
> subcomite FROM dbo.Cerrar_agenda
> WHERE (estado = 'Aprobada')GROUP BY linea) A
> where a.linea=#paso.lineaInversion
>
> update #paso set sesionActual=A.actual from (SELECT
> cabecera_ficha.lineaInversion,SUM(dbo.agenda.costos) AS actual FROM
> dbo.agenda INNER JOIN
> dbo.cabecera_ficha ON dbo.agenda.ficha > > dbo.cabecera_ficha.idFicha
> WHERE (dbo.agenda.agendado = 1 and periodo=@per and sesion=@ses)
> GROUP BY dbo.cabecera_ficha.lineaInversion) A
> where #paso.lineaInversion=A.lineaInversion
>
> update #paso set
>



saldo=comite-subcomite-arrastre,saldoTotal=comite-subcomite-arrastre-sesionA
> ctual
>
> select * from #paso
>
>
> GO
>
>


Respuesta Responder a este mensaje
#5 jtorrej
20/05/2004 - 00:57 | Informe spam
Gracias, por las respuestas
:-)

Tiene algun inconveniente trabajar con tablas temporales ?

"news.microsoft.com" escribió en el mensaje
news:OM%
Hola, tengo un SP que genera una tabla temporal, la cual se ejecuta bien


en
SQL QUERY ANALIZER, pero al tratar de ejecutarla a traves a ASP me indica
que la tabla resultado esta cerrada,

La idea es crear una tabla resumen de tres tablas

Alguna sugerencia

Codigo SP
CREATE PROCEDURE pa_control_ppto2
@per as varchar(5),
@ses as varchar(5)
AS

select numproyecto,lineaInversion,nombre,Montoinicial,0 as comite,0 as
subcomite,arrastre,0 as saldo,0 as sesionActual,0 as saldoTotal
into #paso from t_lineasdeInversiones where left(lineaInversion,4)=@per
update #paso set comite=A.total from (select lineaInversion,sum(monto)as
total from t_aprobado_comite group by lineaInversion) A
where a.lineaInversion=#paso.lineaInversion

update #paso set subcomite=A.subcomite from (SELECT linea, SUM(inversion)


AS
subcomite FROM dbo.Cerrar_agenda
WHERE (estado = 'Aprobada')GROUP BY linea) A
where a.linea=#paso.lineaInversion

update #paso set sesionActual=A.actual from (SELECT
cabecera_ficha.lineaInversion,SUM(dbo.agenda.costos) AS actual FROM
dbo.agenda INNER JOIN
dbo.cabecera_ficha ON dbo.agenda.ficha > dbo.cabecera_ficha.idFicha
WHERE (dbo.agenda.agendado = 1 and periodo=@per and sesion=@ses)
GROUP BY dbo.cabecera_ficha.lineaInversion) A
where #paso.lineaInversion=A.lineaInversion

update #paso set



saldo=comite-subcomite-arrastre,saldoTotal=comite-subcomite-arrastre-sesionA
ctual

select * from #paso


GO


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida