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 26-08-2008
Avatar de StartKill
StartKill StartKill is offline
Miembro
 
Registrado: ene 2004
Posts: 299
Poder: 21
StartKill Va por buen camino
Cool Stored Procedure

Muy buenas Club.

Estoy con MySQL 5.*

Tengo una tabla que basicamente consta de 3 campos
1.- ID -> Identificador del registro
2.- path_file -> Path y nombre de archivo a crear el archivo
2.- datos ->"grafico"/"Texto"...

Deseo hacer un stored procedure que me permita leer un un registro segun el campo ID y que me genere un archivo en path_file con el contenido campo datos

Nota: el archivo se genera en el server

Se que puedo hacerlo con Delphi o PHP, pero necesito que el mismo motor de base de datos lo haga con la ejecucion de un stored procedure.

Alguna idea, observacion, sugerencia para mi requemiento?.

A la espera de sus noticias (que siempre las hay )

Your friend

StartKill
Lima-Perú

Última edición por StartKill fecha: 26-08-2008 a las 17:55:22.
Responder Con Cita
  #2  
Antiguo 27-08-2008
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Te pongo un SP de mysql como muestra esperando te sea de ayuda

Código SQL [-]

/****************************************************************************
06-Junio-2007
SadSpSIUCatCuentas
Edgar Ramírez Rosas     
Procedimiento orientado al manejo de las cuentas bancarias
Permite su navegación, modificación e inserción
*****************************************************************************/

Drop Procedure If Exists SadSpSIUCatCuentas;
CREATE PROCEDURE SadSpSIUCatCuentas
       (
        PVMenu     VarChar(25),   -- Define el bloque a ejecutar
        PVUSuario  Varchar(15),   -- Usuario con que se relacionará la cuenta
        PNCntId    Decimal(6,0),  -- Id de la cuenta bancaria                
        PCEstado   Char(1),       -- Id de estado de la cuenta
        PNBncid   Decimal(6,0),   -- Id del banco al que pertenece la cuenta 
        PNTCnid   Decimal(6,0),   -- Id del tipo de cuenta  
        PVumCuenta VarChar(12),   -- Número de cuenta bancaria
        PVObs      VarChar(250)   -- Observaciones        
       )

BEGIN        
  /*****************************************************************************/
  /*  de ocurrir un problema en las consultas, se lanzar? el siguiente         */
  /*  manejador                                                                */
  /*****************************************************************************/
  DECLARE EXIT HANDLER FOR SQLEXCEPTION 
    BEGIN 
      Rollback;
      SELECT 'Ocurrió un problema al ejecutar la operación en la base de datos' AS Mensaje;
    END;

  /*****************************************************************************/
  /*  Agrega una nueva cuenta bancaria al catálogo                             */
  /*****************************************************************************/
  If PvMenu = 'AgregaCuenta' then
     Start Transaction;

     Select IFNULL(Max(Cnt_Nid),0) + 1 InTo @SigIdCta
       From Sad_TcatCuentas; 

      Insert 
         InTo Sad_TcatCuentas
              (Cnt_NId, Bnc_Nid, TCn_Nid, Cnt_VNumCuenta, Cnt_VObs, Est_CId,
               Cnt_DFecAlta, Cnt_VUsuAlta, Cnt_DFecUltMod, Cnt_VUsuUltMod)
       Values (@SigIdCta, PNBncid, PNTCnid, PVumCuenta, PVObs, 'A',  
               Now(), PVUsuario, Now(),PVUsuario);  
    COMMIT;
    SELECT 'Nada' As Mensaje;     
  End if;



  /*****************************************************************************/
  /*  Devuelve la lista de cuentas bancarias que no han sido asignadas a un    */
  /*  usuario en particular                                                    */
  /*****************************************************************************/
  If PVMenu = 'DamCtasDispUsuario' then
       Select Cuentas.Cnt_Nid, 
              TpoCuenta.Tcn_VDescrip,
              Case 
                When Cuentas.Cnt_VNumCuenta <= 1 Then ''
                Else Concat(' - ',Cuentas.Cnt_VNumCuenta,CatBancos.Bnc_VNombre) 
              End As InfBancaria,
              Cuentas.Cnt_VObs  
         From Sad_TCatCuentas As Cuentas
    Left Join sad_trelusuctasasgn As CtasAsgn
           On CtasAsgn.Usr_Clave = PVUSuario And
              Cuentas.Cnt_NId = CtasAsgn.Cnt_Nid
    Left Join Sad_TCatTpoCuentas As TpoCuenta
           On Cuentas.Tcn_NId = TpoCuenta.Tcn_Nid
    Left Join Sad_TCatBancos As CatBancos
           On Cuentas.Bnc_Nid = CatBancos.Bnc_Nid 
        Where CtasAsgn.Cnt_NId is null;
  End If;

  /*****************************************************************************/
  /*  Asigna la cuenta a un usuario en particular                              */
  /*****************************************************************************/
  If PvMenu = 'AsignaCuenta' then
     Start Transaction;
       Insert 
         InTo sad_trelusuctasasgn
              (Usr_Clave,Cnt_Nid)
       Values (PVUSuario,PNCntId);
    Commit;
    SELECT 'Nada' AS Mensaje;     
  End if;
  
  /*****************************************************************************/
  /*  Elimina la asignación de una cuenta a un usuario en particular                              */
  /*****************************************************************************/
  If PvMenu = 'QuitaCuenta' then
     Start Transaction;
       Delete From sad_trelusuctasasgn
         Where Usr_clave = PVUSuario And
               Cnt_Nid = PNCntId;
    Commit;
    SELECT 'Nada' AS Mensaje;     
  End if;
  
  /*****************************************************************************/
  /*  Asigna la cuenta a un usuario en particular                              */
  /*****************************************************************************/
  If PvMenu = 'DameTposCuenta' then
      Select Tcn_NId, Tcn_VDescrip
        From sad_tcattpocuentas;
  End if;

  /*****************************************************************************/
  /*  Devuelve la lista de cuentas por estado a mostrar en el catálogo         */
  /*****************************************************************************/
  If PvMenu = 'DameCuentasCat' then
    
        Select CatCuenta.Cnt_Nid As Cuenta,
               TpoCta.Tcn_VDescrip,
               Case CatCuenta.Bnc_Nid  
                When 1 Then ''
                Else Concat_Ws(' - ',CatBanco.Bnc_VNombre,CatCuenta.Cnt_VNumCuenta)
               End As InfoBanc,
               CatCuenta.Cnt_VObs,
               ifnull(Importes.Capital,0) As Capital,
               IfNull(Importes.Transito,0) As Transito 
          From Sad_TCatCuentas As CatCuenta
    Inner Join Sad_TRelUsuCtasAsgn As CtasAsgn 
            On CtasAsgn.Usr_Clave = PVUSuario And
               CtasAsgn.Cnt_Nid = CatCuenta.Cnt_Nid  
     Left Join Sad_TCatTpoCuentas As TpoCta  
            On CatCuenta.TCn_Nid = TpoCta.TCn_Nid
     Left Join Sad_TCatBancos As CatBanco
            On CatCuenta.Bnc_Nid = CatBanco.Bnc_Nid
     Left Join (
                Select MovtoCta.Cnt_Nid,
                           Sum(Case MovtoCta.Mvt_CEstado
                                 When 'P' Then MovtoCta.Mvt_NImporte
                                 Else 0 
                           End) As Capital,              
                           Sum(Case MovtoCta.Mvt_CEstado
                                 When 'T' Then MovtoCta.Mvt_NImporte
                                 Else 0 
                               End) As Transito 
                      From Sad_TRegMovtosCtas As MovtoCta
                Inner Join Sad_TRelUsuCtasAsgn As CtasAsgn 
                        On CtasAsgn.Usr_Clave = PVUSuario And
                           MovtoCta.Cnt_Nid = CtasAsgn.Cnt_Nid
                  Group By MovtoCta.Cnt_Nid
               ) As Importes
            On CatCuenta.Cnt_Nid = Importes.Cnt_Nid 
         Where CatCuenta.Est_CId = PCEstado;
  End if;


  /*****************************************************************************/
  /*  Devuelve la lista de cuentas asignadas a un usuario en particular        */
  /*****************************************************************************/
  If PvMenu = 'DameCuentasAsig' then
        Select CatCuenta.Cnt_Nid As Cuenta,
               TpoCta.Tcn_VDescrip,
               Case CatCuenta.Bnc_Nid  
                When 1 Then ''
                Else Concat_Ws(' - ',CatBanco.Bnc_VNombre,CatCuenta.Cnt_VNumCuenta)
               End As InfoBanc,
               CatCuenta.Cnt_VObs 
          From Sad_TCatCuentas As CatCuenta
    Inner Join Sad_TRelUsuCtasAsgn As CtasAsgn 
            On CtasAsgn.Usr_Clave = PVUSuario And
               CtasAsgn.Cnt_Nid = CatCuenta.Cnt_Nid  
     Left Join Sad_TCatTpoCuentas As TpoCta  
            On CatCuenta.TCn_Nid = TpoCta.TCn_Nid
     Left Join Sad_TCatBancos As CatBanco
            On CatCuenta.Bnc_Nid = CatBanco.Bnc_Nid;
  End if;
   

End;
__________________
Conoce mi blog http://www.edgartec.com
Responder Con Cita
  #3  
Antiguo 27-08-2008
Avatar de StartKill
StartKill StartKill is offline
Miembro
 
Registrado: ene 2004
Posts: 299
Poder: 21
StartKill Va por buen camino
Humm, gracias poliburro por tu respuesta. (pensé que ya tenia mi respuesta )

Mi requerimiento básico es: Deseo hacer un stored procedure en mysql que me permita crear un archivo en el server, este archivo tendra como contenido el "valor" de algun campo de una tabla..

Mas o menos deseo hacer algo como esto:

Procedure crea_archivo (pid)
Begin
select datos, path_file from file_datos where id=pid
into xdatos, xpath_file

flag=create_file(cpath_file)
write(xdatos,flag )
close (flag)
end


Claro está que no es un codigo verdadero, la intención es dar a conocer mi necesidad.

Necesito que este sea hecho por un stored procedure o algun otro metodo, pero que ejecute el mismo mysql.

Saludos

StartKill
Lima-Perú
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
Problema con stored procedure dape Firebird e Interbase 11 20-10-2005 05:13:23
Stored Procedure Insert Juanito-Kun MS SQL Server 2 24-05-2005 23:13:54
Ver los Stored Procedure tgsistemas SQL 0 06-04-2004 17:18:22
Stored Procedure tgsistemas SQL 1 27-02-2004 13:10:33
Llamar stored procedure con BDE Ricardo Alfredo Conexión con bases de datos 3 12-09-2003 03:09:31


La franja horaria es GMT +2. Ahora son las 01:43:24.


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