Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 12-03-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola gorsan.

Te pongo un ejemplo desde el cliente usando TIBQuery y otro desde el servidor usando un stored procedure.

Cliente:
Código Delphi [-]
procedure TDataModule1.CreateTable(const TableName: string);
begin
 with TIBQuery.Create(nil) do
  try
    Close;
    Database:= IBDatabase1;
    Transaction:= IBTransaction1;
    SQL.Add('SELECT RDB$RELATION_NAME FROM RDB$RELATIONS');
    SQL.Add('WHERE RDB$VIEW_BLR IS NULL');
    SQL.Add('AND (RDB$SYSTEM_FLAG IS NULL OR RDB$SYSTEM_FLAG = 0)');
    SQL.Add('AND RDB$RELATION_NAME = :PTABLE');
    ParamByName('PTABLE').AsString:= TableName;
    Open;
    if IsEmpty then
      with TIBQuery.Create(nil) do
      try
        Close;
        Database:= IBDatabase1;
        Transaction:= IBTransaction1;
        SQL.Add('CREATE TABLE '+ TableName + '(');
        SQL.Add('ID INTEGER, NOMBRE VARCHAR(30),');
        SQL.Add('etc, etc');
        SQL.Add(')');
        ExecSQL;
      finally
        Free;
      end
    else
      raise Exception.Create('Existe una tabla con ese nombre');
  finally
    Free;
    IBTransaction1.Commit;
  end;
end;

Servidor:
Código SQL [-]
SET TERM ^ ;

CREATE OR ALTER PROCEDURE SP_CREATE_TABLE (
    TABLENAME VARCHAR(100))
AS
DECLARE VARIABLE RESULT SMALLINT;
DECLARE VARIABLE SQL VARCHAR(300);
BEGIN
  SELECT COUNT(*)
  FROM RDB$RELATIONS
  WHERE RDB$VIEW_BLR IS NULL
  AND (RDB$SYSTEM_FLAG IS NULL OR RDB$SYSTEM_FLAG = 0)
  AND RDB$RELATION_NAME = TRIM(:TABLENAME) INTO RESULT;

  IF (RESULT = 0) THEN
  BEGIN
    SQL= 'CREATE TABLE' || ' ' || TRIM(TABLENAME) || '('
         || 'ID INTEGER, NOMBRE VARCHAR(30),'
         || 'etc, etc);';
    EXECUTE STATEMENT SQL;
  END
  SUSPEND;
END^

SET TERM ; ^

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 tabla en tiempo de ejecucion en un directorio X Tauro78 Tablas planas 2 24-03-2010 00:37:34
Tabla en tiempo de ejecucion noshy SQL 1 24-07-2006 00:39:31
crear una tabla en tiempo de ejecucion. chileno MySQL 1 06-07-2005 03:13:55
Crear Tabla en Tiempo de ejecucion alcides Varios 4 01-07-2005 20:23:52
Crear un DSN en tiempo de ejecucion neyvan Conexión con bases de datos 7 21-05-2004 17:41:45


La franja horaria es GMT +2. Ahora son las 15:25:07.


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