Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-12-2007
akela akela is offline
Miembro
 
Registrado: may 2004
Posts: 21
Poder: 0
akela Va por buen camino
Question nombres de tablas en un procediemiento almacenado IB

saludos amigos:

estoy utilizando INTERBASE 7.0 cree un Procedimiento Almacenado para obtener datos de algunas tablas.

ahora tengo que hacer que ese procediemineto recupere datos de todas las tablas, las tablas tienen un nombre similar que es el Siguiente:

NOMaammcc
MOVaammcc

donde aa es el año
mm es el mes
cc es el consecutivo de la tabla

como ven los ultimos 4 caracteres varían, había pensado en pasar el nombre de la tabla como un parametro (en informix si se puede hacer) pero IB me marca un error,

¿alguien sabe como podría recorrer todas las tablas de mi BD sin tener que hacer un PA para cada una? en otras palabras ¿alguien sabe como hacer para poner un nombre de tabla dinámico en un PA?

saludos.

PD. este el el PA:

Código SQL [-]
LTER PROCEDURE ACUMULA_CPTOS
RETURNS
(rfc char(13),cpto char(2),pd char(1), importe numeric(15,2) )
AS
DECLARE VARIABLE RFCS char(13);
DECLARE VARIABLE cpt char(2);
DECLARE VARIABLE tipo char(1);
DECLARE VARIABLE impo numeric(15,2);
BEGIN
FOR SELECT rfc,concepto, perc_ded, sum(importe) FROM nom070100 n, mov070100 m WHERE n.id=m.id_nom
GROUP by rfc,concepto,perc_ded ORDER by RFC, perc_ded, concepto
INTO
:rfcs,:cpt,:tipo,:impo DO
BEGIN
RFC = :rfcs;
cpto = :cpt;
pd = :tipo;
importe = :impo;
SUSPEND;
END


END

Última edición por akela fecha: 13-12-2007 a las 23:59:01. Razón: precisión de información
Responder Con Cita
  #2  
Antiguo 14-12-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
En Interbase no sé si soporta EXECUTE STATEMENT, y menos aún en un for select. Intuitivamente y muy propenso a error sería:

El nombre de la tabla lo pasas como varchar(20).

Código SQL [-]
declare variable strSql varchar(80)
as
strSql = 'select * from ' || nombreTabla || ' where ....';
for EXECUTE STATEMENT strSql do
begin

end;

... Por intentarlo que no quede .


Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 14-12-2007
akela akela is offline
Miembro
 
Registrado: may 2004
Posts: 21
Poder: 0
akela Va por buen camino
Question

gracias por responder Lepe,

te comento que esa instrucción no está soportada en IB 7.0 :'( y estoy viendo que Firebird es una opción muy interesante, sólo que en este momento tenemos muchos sistemas en producción con IB y pensar en una migración de momento lo veo complicado.

de casualidad sabes si hay unequivalente al Execute Estatement en IB?

yo me pongo a investigar lo mismo en google ahora mismo.

gracias.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Nombres ... gluglu Humor 10 21-06-2006 18:24:51
ordernar nombres y evitar nombres repetidos en DBLookupComboBox @-Soft Conexión con bases de datos 4 14-01-2004 16:30:51
Nombres e Tablas buitrago Varios 1 16-12-2003 01:55:33
Obtener nombres hgiacobone Varios 1 23-07-2003 18:55:02


La franja horaria es GMT +2. Ahora son las 15:58:36.


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
Copyright 1996-2007 Club Delphi