Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-07-2013
jars jars is offline
Miembro
 
Registrado: mar 2004
Posts: 279
Poder: 21
jars Va por buen camino
Desde una SP crear tabla e insert

Hola amigos.
Me encuentro con el siguiente problema.
A partir de una tabla, debo crear ntablas segun los distintos valores de un campo.
Mi problema es que desde la SP invoco a otra SP que crea la tabla y luego intenta hace un insert pero falla.
Lo que noto es que desde el IBexpert ejecuto la SP pero las tablas no se crean hasta que no le doy con el boton del commit.
Hay alguna forma de crear una tabla e inmediatamente poder hacer un insert, desde la misma SP?
Gracias
Responder Con Cita
  #2  
Antiguo 30-07-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Qué base de datos?, ¿qué es lo que te falla?, ¿qué estás haciendo (código)?, ¿qué quieres hacer exactamente?, ¿por qué quieres crear tablas desde un SP?... ... ...
Responder Con Cita
  #3  
Antiguo 30-07-2013
jars jars is offline
Miembro
 
Registrado: mar 2004
Posts: 279
Poder: 21
jars Va por buen camino
La bbdd es Firebird 2.5
El problema es que no me permite crear una tabla e inmediatamente despues insertarle registros.

Código SQL [-]
CREATE OR ALTER PROCEDURE TV_SP_SPLIT_TABLE (
    atable varchar(25),
    afield varchar(25))
returns (
    rc varchar(1000))
as
declare variable new_tbl varchar(25);
declare variable read_fld varchar(25);
declare variable script1 varchar(1000);
declare variable script2 varchar(1000);
declare variable lexists integer;
begin
  script1 = 'SELECT DISTINCT ' || :afield || ' FROM ' || :atable || ' ORDER BY 1';

  /* recorre cada uno de los agentes */
  for execute statement :script1 into :read_fld do
  begin
    -- existe la tabla?
    new_tbl = :atable || '_' || :read_fld;
    execute procedure tv_sp_exists_table(:new_tbl) returning_values :lexists;

    if (:lexists > 0) then
    begin
      execute statement 'DELETE FROM ' || :new_tbl;
    end else
    begin
        execute procedure tv_sp_create_dial_table_from(:atable, :new_tbl, :read_fld, :read_fld);
    end

    script2 = 'INSERT INTO ' || :new_tbl || ' SELECT * FROM ' || :atable ||
              ' WHERE ' || :afield || ' = ' || :read_fld;
    execute statement :script2;
  end

  -- Todo OK
  rc = 1;

  -- Hubo un error
  when any do
  begin
    rc = -1;
  end
end
Responder Con Cita
  #4  
Antiguo 31-07-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Y las tablas sí las crea?, ¿hasta dónde funciona?, ¿algún mensaje de error?
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
Crear SubConsulta en Sql con datos desde Tabla RRenault SQL 8 10-07-2010 00:11:43
Crear una Tabla SQL desde la Interfaz Alejandro73 SQL 5 28-11-2006 18:03:18
Con delphi Insert en Firebird varios registros desde otra tabla lasweb Conexión con bases de datos 3 04-04-2005 20:58:26
Crear tabla .BDF desde delphi VRO Conexión con bases de datos 1 02-02-2005 18:08:54
crear tabla desde una consulta sql... ronimaxh SQL 6 27-07-2004 15:57:57


La franja horaria es GMT +2. Ahora son las 12:57:01.


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