Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Geovane Velmer

Criar Procedimento Armazenado em tempo de execução

Recommended Posts

Olá galera, estou com um problema meio chato aqui..

 

Eu to criando uma aplicação para atualizar o banco de dados, nela ja estou criando

e alterando tabelas normalmente, mas quando vou criar um procedimento é retornado um erro

 

SQL error cod = -104
Token unknown - line 14, column 6
?'.

 

Estou usando uma query para fazer isso..

o código é o seguinte

 

BQryInsUp.Close;
BQryInsUp.SQL.Clear;
BQryInsUp.SQL.Add('CREATE OR ALTER PROCEDURE PA_ALTERQTITEM');
BQryInsUp.SQL.Add('(');
BQryInsUp.SQL.Add('  N_QT FLOAT,');
BQryInsUp.SQL.Add('  I_CODITEM INTEGER');
BQryInsUp.SQL.Add(')');
BQryInsUp.SQL.Add('AS');
BQryInsUp.SQL.Add('DECLARE VARIABLE VALORIT DOUBLE PRECISION;');
BQryInsUp.SQL.Add('DECLARE VARIABLE TOTAL DOUBLE PRECISION;');
BQryInsUp.SQL.Add('DECLARE VARIABLE COMISSAO DOUBLE PRECISION;');
BQryInsUp.SQL.Add('DECLARE VARIABLE NCOMISSAO DOUBLE PRECISION;');
BQryInsUp.SQL.Add('begin');
BQryInsUp.SQL.Add('SELECT C_PRECO FROM ITEM');
BQryInsUp.SQL.Add('WHERE I_CONTADOR=:I_CODITEM');
BQryInsUp.SQL.Add('INTO :VALORIT;');

BQryInsUp.SQL.Add('TOTAL = VALORIT * :N_QT;');

BQryInsUp.SQL.Add('SELECT N_COMISSAO FROM ITEM');
BQryInsUp.SQL.Add('WHERE I_CONTADOR=:I_CODITEM;');
BQryInsUp.SQL.Add('INTO :NCOMISSAO;');

BQryInsUp.SQL.Add('IF (NCOMISSAO > 0) THEN');
BQryInsUp.SQL.Add('   BEGIN');
BQryInsUp.SQL.Add('   COMISSAO = (VALORIT * :N_QT) * (NCOMISSAO/100);');
BQryInsUp.SQL.Add('   END');

BQryInsUp.SQL.Add('UPDATE ITEM SET');
BQryInsUp.SQL.Add('N_QUANTIDADE=:N_QT,');
BQryInsUp.SQL.Add('C_TOTAL=:TOTAL,');
BQryInsUp.SQL.Add('C_COMISSAO=:COMISSAO');
BQryInsUp.SQL.Add('WHERE I_CONTADOR=:I_CODITEM;');
BQryInsUp.SQL.Add('end;');
BQryInsUp.ExecSQL;

 

pelo IBConsole eu concigo criar q é uma beleza, mas preciso q seja em tempo de execução.

 

Uso DELPHI 7, FIREBIRD 2.0.3, e componentes da paleta INTERBASE.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque você precisa ficar criando a procedure a cada execução??? Não é mais fácil simplesmente criar a procedure no banco e mandar executá-la passando os valores como parâmetro? Aliás... nunca tentei criar procedures assim, somente executá-las... não sei se o TQuery da vida dão suporte a este tipo de comando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque você precisa ficar criando a procedure a cada execução??? Não é mais fácil simplesmente criar a procedure no banco e mandar executá-la passando os valores como parâmetro? Aliás... nunca tentei criar procedures assim, somente executá-las... não sei se o TQuery da vida dão suporte a este tipo de comando.

 

Chrnos não é que eu queira cria-lo a cada execução, preciso criar uma aplicação que ira atualizar o banco de dados de um sistema que eu tenho,

essa aplicação ira criar tabelas e procedimentos que forem necessários para o funcionamento de cada nova versão do sistema.

 

Na aplicação de atualização eu uso um metodo para verificar se uma determinada atualização já foi feita e se já tiver sido feita e ignoro.

 

Preciso desse aplicativo para atualizar um banco de dados que já está em uso no cliente, sendo assim não preciso ficar digitando códigos pelo

IBConsole e facilita muito no suporte.

 

Espero que tenha me entendido.

Abraços e obrigado por responder;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.