[firebase-br] Ref: SQL com variaveis

Carlos - GMail krlosgilson em gmail.com
Sex Fev 24 16:25:25 -03 2012


Poderia criar uma "Stored Procedure" para executar estes Delete's:

set term ^;

create or alter procedure SP_DELETAR(
pNumero_DAV integer)
as
begin
   delete from DAV_PARCELAS Where DAV_CODIGO = :pNumero_DAV;
   delete from DAV_CONDICAO Where DAV_CODIGO = :pNumero_DAV;
   delete from DAV_PARCELAS Where DAV_CODIGO = :pNumero_DAV;
   delete from ITEM_DAV Where DAV_CODIGO = :pNumero_DAV;
   delete from DAV_CUPOM Where DAV_CODIGO = :pNumero_DAV;
   delete from DAV Where DAV_CODIGO = :pNumero_DAV;
end^

set term ;^


Para executar a procedure utilize a instrução Sql abaixo:

execute procedure SP_DELETAR(:pNumero_DAV);

Obs: Informe o valor para o parâmetro pNumero_DAV antes de executar a 
Procedure.

Percebi que vc quer deletar primeiramente registros das tabelas 
relacionadas para depois excluir o registro da tabela principal, ao 
invés disso vc poderia criar uma FOREIGN KEY com Cascade DELETE em cada 
tabela relacionada vinculando à tabela principal, sendo assim bastava 
dar o comando DELETE na tabela principal.

Espero ter ajudado!
> Boa tarde, Sr.
>
> Estou com uma dúvida, sobre como seria o SQL para esta sentença SQL usar
> uma variável local, aonde eu definiria um valor que quero excluir
>
> Como poderia ser no Firebird ?
>
> Tentei:
>
> Declare variable pnumeroDAV;
>
>
> Delete from DAV_PARCELAS Where DAV_CODIGO = :pNumero_DAV;
> Delete from DAV_CONDICAO Where DAV_CODIGO = :pNumero_DAV;
> Delete from DAV_PARCELAS Where DAV_CODIGO = :pNumero_DAV;
> Delete from ITEM_DAV Where DAV_CODIGO = :pNumero_DAV;
> Delete from DAV_CUPOM Where DAV_CODIGO = :pNumero_DAV;
> Delete from DAV Where DAV_CODIGO = :pNumero_DAV;
> E ele recusou. Qual seria a sintaxe mais adequada, para que cada sentença
> SQL acima considere o valor contido na variável pNumeroDAV
>
> Obrigado a todos
>
> -- Att. Omar Marques Haddad Analista de Sistemas Sênior


Mais detalhes sobre a lista de discussão lista