[firebase-br] parametros Stored Procedure duvida

Forum ASR forum em asreassociados.com.br
Qui Jul 6 10:08:07 -03 2006


.: I M P O R T A N T E :. Compatível com o firebird 1.5 ou superior

Acabei de fazer um exemplo, não testei, mas acho que vc pode compreender 
a lógica e fazer suas devidas correções:

SET TERM !!;
CREATE PROCEDURE SP_PARAM_ATUALIZAR
(PAR_1 INTEGER
,PAR_2 INTEGER)
AS
DECLARE VARIABLE V_SQL VARCHAR(1000);
DECLARE VARIABLE V_UTILIZA_VIRG SMALLINT = 0;
BEGIN 
  -- NÃO NECESSITA ATUALIZAÇÃO
  IF ((PAR_1 IS NULL) AND (PAR_2 IS NULL)) THEN 
    EXIT;       
 
  V_SQL = 'UPDATE NOME_TABELA';
  V_SQL = V_SQL || ' SET';
 
  -- PARÂMETRO COM CONTEÚDO
  IF (PAR_1 IS NOT NULL) THEN 
  BEGIN
    V_SQL = V_SQL || ' PAR_1 = ' || :PAR_1
    V_UTILIZA_VIRG = 1;
  END 
   
  IF (PAR_2 IS NOT NULL) THEN
  BEGIN
    IF (V_UTILIZA_VIRG = 1) THEN
      V_SQL = V_SQL || ' , ';
 
    V_SQL = V_SQL || ' PAR_2 = ' || :PAR_2  
  END
 
  EXECUTE STATEMENT V_SQL; 
END !!
SET TERM ;!!

Atenciosamente,

Airton Salviano Ramos de Souza
Analista de Sistemas
www.asreassociados.com.br

Felipe Sanches escreveu:
> Pessoal, eu tenho um Stored procedure para inserir e atualizar uma 
> tabela do meu sistema com 10 parâmetros,  a questão é a seguinte em 
> determinados momentos eu não quero
> Atualizar ou inserir dados em todos os campos de uma vez, as vezes quero 
> somente colocar dados no parâmetro 1,2,3 e os outros deixa como está sem 
> alterar seu valor na tabela, mas quando executo a SP e passo valores 
> apenas para esses 3 parâmetros que realmente quero atualizar , a 
> S.Procedure apaga o conteúdo dos outros.
> Vcs sabem o como eu trato esse caso? Devo fazer alguma coisa a mais na 
> procedure?
>
> Não sei se fui claro, se o não entenderem me avisem que eu tento 
> explicar de outra maneira.
>
> Felipe
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>   





Mais detalhes sobre a lista de discussão lista