[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