Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-11-2006
Avatar de erian96
erian96 erian96 is offline
Registrado
 
Registrado: jun 2006
Posts: 8
Poder: 0
erian96 Va por buen camino
Ejecutar varias SQL en una sola llamada

Hola buen día a todos.

Estoy desarrollando una aplicación Delphi/Zeos 6.5.1-alpha/MySQL 5.0.22 - mis componentes Zeos tienen los ultimos parches para esa versíon (permiten la ejecución de SP's) -

Necesito ejecutar varias sentencias en una sola llamada al servidor, ¿alguien sabe como hacerlo?

Por ej., en este momento lo hago de la siguiente forma:
Código Delphi [-]
 
qSQL.SQL.Text := 'CALL calcular_siguiente_folio_movimiento_inventario(@folio)';
qSQL.ExecSQL;
qSQL.SQL.Text := 'SELECT @folio';
qSQL.Open;

y lo que quisiera hacer es ejecutar la primera instrucción y la tercera en una sola llamada.

Gracias.
Responder Con Cita
  #2  
Antiguo 09-11-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Sé que hay componentes (por ejemplo ADO -que vienen con Delphi-) que permiten lanzar un SQL cque devuelva varios Recordsets; Una vez que la has ejecutado puedes "moverte" (NextRecordSet) entre los distintos Recorsets que has obtenido. El redimiento es sensiblemente superior a si los ejecutas por separado.

Tal vez deberías mirar los componentes que utilizas para ver si poseen algo similar. Tal vez alguien que conozca Zeos pueda decirnos si poseen alguna característica similar a ésta.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 09-11-2006
Avatar de erian96
erian96 erian96 is offline
Registrado
 
Registrado: jun 2006
Posts: 8
Poder: 0
erian96 Va por buen camino
Que tal Neftali, gracias por tu ayuda. Solo un ultimo favor, me podrías postear un ejemplo de como lo haces tú y si me puedes decir sobre que DBMS lo ejecutas.

Gracias.
Responder Con Cita
  #4  
Antiguo 10-11-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por erian96
...me podrías postear un ejemplo de como lo haces tú y si me puedes decir sobre que DBMS lo ejecutas.
Yo en mi caso he utilizado ADO con SQL Server. Depende del proveedor, por ejemplo ADO con MDB (Jet4) no permite esta característica.
Alado una sentencia del estilo a esta:

Código SQL [-]
select * from tabla1
select * from tabla2
select * from tabla3

Para ejecutarla se hace normal:

Código Delphi [-]
  ADOQuery1.Open;

Para cambiar al siguiente DataSet (por ejemplo si lo estás viendo en un Grid) serñía así:

Código Delphi [-]
var
  n:Integer;
begin
  // Creas un nuevo recordset
  FRecordSet := TADODataSet.Create(nil);
  // Pasas al siguiente
  FRecordSet.Recordset := ADOQuery1.NextRecordSet(n);
  // cambias la fuente de datos del DBGrid
  DBGrid1.DataSource.DataSet := FRecordSet;
  // ...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 10-11-2006
Avatar de erian96
erian96 erian96 is offline
Registrado
 
Registrado: jun 2006
Posts: 8
Poder: 0
erian96 Va por buen camino
Neftali, muchas gracias por tu última respuesta. Trataré de adecuar tu solución a mi problema.

He leido por ahí de un componente TSQLProcessor del mismo paquete Zeos probaré con él aunque creo q no me será de mucha ayuda debido a que mis sentencias son llamadas a procedimientos almacenados y de selección de datos.

Gracias de nuevo.
Responder Con Cita
  #6  
Antiguo 26-11-2006
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
El ZSQLProcessor te sirve mas que nada para correr scripts SQL, es decir, series de sentencias que no precisamente regresan datos. Por otro lado Tienes
ZSQLStoredProc, que precisamente ejecuta procedimientos almacenados. Este componente se comporta como un Dataset y puedes manipularlo casi igual. Para el ejemplo que pusiste yo creo que si te sirve...revisalo
__________________
AKA "El animalito" ||Cordobés a mucha honra||
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
Ejecutar el .exe una sola vez cricri2999 Varios 6 23-09-2010 13:55:36
DbExpress:Varias consultas,una sola transaccion josemmerida Conexión con bases de datos 0 13-05-2005 18:11:56
Guardar varias imagenes en una sola maravert Gráficos 2 28-02-2005 17:19:29
Backup de varias DB en una sola transacción. josemmerida Firebird e Interbase 2 05-11-2004 13:07:50
Poner maestro varias tablas en una sola marial Conexión con bases de datos 9 16-05-2004 16:18:36


La franja horaria es GMT +2. Ahora son las 10:43:04.


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