Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MS SQL Server (https://www.clubdelphi.com/foros/forumdisplay.php?f=23)
-   -   Insertar datos en una tabla desde consulta en un SP (https://www.clubdelphi.com/foros/showthread.php?t=51058)

subzero 05-12-2007 00:13:46

Insertar datos en una tabla desde consulta en un SP
 
Hola amigos del club...


Siendo un poco directo tengo un inconveniente al realizar un procedimientos almacenado en SQL Server 2005 y no he encontrado algo que me permita orientarme un poco. Lo que estoy tratando de generar es un procedimiento en el cual se realice la consulta, luego se cree una tabla y hasta aqui todo esta bien el problema esta en ¿cómo puedo ingresar los datos resultantes de la consulta en la tabla que se crea en el procedimiento?, cabe anotar que normalmente trabajo en firebird y la sintaxis es un poco diferente les expongo mi códígo.

Código SQL [-]
CREATE PROCEDURE dbo.sp_baja_rotacion
AS
BEGIN
  declare @filas integer
  SELECT DISTINCT
  max(dbo.documentos_lin.fec) as fecha,
  substring(dbo.documentos_lin.codigo,1,6) as codigo
  FROM dbo.documentos_lin
  WHERE
  (dbo.documentos_lin.sw = 1) AND
  (dbo.documentos_lin.tipo IN ('80','81','82','83'))
  GROUP BY substring(dbo.documentos_lin.codigo,1,6)
  create table temp_br(fec datetime, cod varchar(20))
   
  ES AQUI DONDE QUISIERA HACER LA INSERCION  

  drop table temp_br
END

De antemano agradezco el interes que me prestan gracias.

subzero 05-12-2007 15:26:30

Bueno... indagando un poco creo que me estaba complicando la cuestión era sencilla solo realice una consulta y la inserte en la tabla... gracias a todos aqui muestro como realice el proceso.....

Código SQL [-]
create table temp_br(fec datetime, cod varchar(20))
  insert into temp_br(fec, cod)
  (SELECT DISTINCT
  max(dbo.documentos_lin.fec) as fecha,
  substring(dbo.documentos_lin.codigo,1,6) as codigo
  FROM dbo.documentos_lin
  WHERE
  (dbo.documentos_lin.sw = 1) AND
  (dbo.documentos_lin.tipo IN ('80','81','82','83'))
  GROUP BY substring(dbo.documentos_lin.codigo,1,6))
  select * from temp_br
  /*drop table temp_br*/

javier7ar 05-12-2007 16:18:19

Tambien podes usar SELECT INTO para que te cree la tabla automaticamente y no tenes que hacer el create table a mano. Y si la tabla es temporal y solo la vas a usar en el procedimiento almacenado, te conviene marcarla como tabla temporal con # antes del nombre de la tabla; con esto si te olvidas de hacer el drop de la tabla el SQL Server lo hace automatico cuando te desconectas.
Código SQL [-]
SELECT DISTINCT max(dbo.documentos_lin.fec) as fecha,
  substring(dbo.documentos_lin.codigo,1,6) as codigo
INTO #temp_br
FROM dbo.documentos_lin
WHERE
  (dbo.documentos_lin.sw = 1) AND
  (dbo.documentos_lin.tipo IN ('80','81','82','83'))

GROUP BY substring(dbo.documentos_lin.codigo,1,6)
-- ACA PODES TRABAJAR CON LA TABLA TEMPORAL
select * from #temp_br

-- SIEMPRE AL FINAL DEBERIAS BORRARLA
drop table #temp_br


La franja horaria es GMT +2. Ahora son las 04:40:16.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi