Pular para o conteúdo
Visualizando 4 posts - 1 até 4 (de 4 do total)
  • Autor
    Posts
  • #87027
    AleCris
    Participante

      Tenho a seguinte situação:

      estou desenvolvendo um programa em Delphi 2009, conexao BDE com o oracle e necessito executar um scrip sql(salvo em arquivo) em tempo de execução.
      Exemplo:

      — Geração de Modelo físico

      CREATE TABLE PESSOA (
      CODPESSOA Número(4) PRIMARY KEY,
      NOME STRING
      )
      /
      CREATE TABLE ENDERECO (
      RUA STRING,
      BAIRRO STRING,
      NUMERO INTEGER,
      NUMEND INTEGER PRIMARY KEY,
      CODPESSOA INTEGER,
      FOREIGN KEY(CODPESSOA) REFERENCES PESSOA (CODPESSOA)
      )

      /

      como posso fazer?

      Sei que o forum é de oracle e isto envolve mais programação, mas se alguém puder me ajudar, agradeço muito!

      #87029
      Rodrigo Mesquita
      Participante

        Não endendi muito como vc quer fazer isso, mais vai uma sugestão.

        vc pode executar esse script via sqlplus
        grave esse script em um arquivo .sql

        ex.:
        sqlplus usuario/senha@banco @c:arquivo.sql
        exit;

        #87032
        Avatar photoRegis Araujo
        Participante

          Ola Cris, bom dia..

          Vamos lá.. só uma sugestão.. Não utilize BDE para conexão com oracle.. ele está mega ultrapassado.. utilize o componente dbexpress que é bem mais amigável e mais rapido que BDE..

          Para vc executar este script basta vc criar uma unit no delphi, adicionar um componente SQL e um componente Button.. No evento Click do componente, proceder conforme abaixo..

          CRIAÇÃO DA TABELA PESSOA

          procedure TForm1.QryTabelaPessoaClick(Sender: TObject);
          begin
          Q.Close ;
          Q.SQL.Text:=
          'CREATE TABLE PESSOA ' +
          '(CODPESSOA NUMBER(4) PRIMARY KEY, '+
          ' NOME VARCHAR2(50))';
          Q.Prepare;
          Q.ExecSQL;
          Q.Free;

          end;

          CRIAÇÃO DA TABELA ENDEREÇO

          procedure TForm1.QryTabelaEnderecoClick(Sender: TObject);
          begin
          Q.Close ;
          Q.SQL.Text:=
          ' CREATE TABLE ENDERECO ' +
          '(NUMERO NUMBER(8) PRIMARY KEY, ' +
          ' RUA VARCHAR2(50), ' +
          ' BAIRRO VARCHAR2(50), ' +
          ' NUMERO NUMBER(8), ' +
          ' CODPESSOA NUMBER(8), ' +
          ' FOREIGN KEY(CODPESSOA) REFERENCES PESSOA (CODPESSOA)) ';
          Q.Prepare;
          Q.ExecSQL;
          Q.Free;

          end;

          Obs. Vc precisa criar um Button para cada evento… e eu adaptei seu código de criação para o Oracle..

          Espero ter ajudado..

          Abraços..

          #87068
          AleCris
          Participante

            Ajudou sim obrigada! Na verdade eu penso em fazer isto como ultima solução, só que na verdade desta forma precisarei ler todo o arquivo, capturar os comandos sql, e passar para a propriedade sql.text do compente escolhido.

            Queria saber se não existe um componente que recebe o diretorio/arquivo.sql e o executa diretamente no banco, como fazemos no sqlplus, mas isso deveria ser um componente no programa que recebe o arquivo e executa diretamente no banco em tempo de execução.

          Visualizando 4 posts - 1 até 4 (de 4 do total)
          • Você deve fazer login para responder a este tópico.