Fórum Stored Procedure retornar mais de um valor #57349

30/11/2006

0

Bom dia pessoal,

Eu fiz uma procedure que é para retornar o CPFs, ou CNPJs, formatados, e gostaria que ela trouxesse todos e ela só retorna o primeiro valor, como eu posso fazer pra retornar mais de um valor?

Aqui ta a procedure pra vcs verem, eu tive que colocar o first 1 para ele não dar o erro de multiple rows

SET TERM ^ ;

CREATE PROCEDURE SP_CPF_CNPJ 
RETURNS (
    CPF_CNPJ VARCHAR(20))
AS
DECLARE VARIABLE VALIDO INTEGER;
DECLARE VARIABLE TAMANHO VARCHAR(20);
begin
for select ent.codgeral,cpf_validarnum(ent.codgeral) from cadentidades ent
into :tamanho,:valido
do
  begin
    if (:valido = 0) then
      select first 1 cpf_formatar(ent.codgeral) from cadentidades ent into :cpf_cnpj;
    else
      select first 1 cnpj_formatar(ent.codgeral) from cadentidades ent into :cpf_cnpj;

   end
  suspend;
end

^

SET TERM ; ^




Blbacelar

Blbacelar

Responder

Posts

30/11/2006

Emerson Nascimento

o problema é que o suspend (que é para ´retornar´ o valor) está fora do laço. faça assim:
SET TERM ^ ; 

CREATE PROCEDURE SP_CPF_CNPJ 
RETURNS ( 
    CPF_CNPJ VARCHAR(20)) 
AS 
  DECLARE VARIABLE VALIDO INTEGER; 
  DECLARE VARIABLE TAMANHO VARCHAR(20); 
begin 
  for
    select ent.codgeral,cpf_validarnum(ent.codgeral)
    from cadentidades ent
    into :tamanho,:valido do
  begin 
    if (:valido = 0) then
      select first 1 cpf_formatar(ent.codgeral) from cadentidades ent into :cpf_cnpj; 
    else 
      select first 1 cnpj_formatar(ent.codgeral) from cadentidades ent into :cpf_cnpj; 
    suspend;
  end 

end 

^ 

SET TERM ; ^



Responder

Gostei + 0

30/11/2006

Blbacelar

Agora ele traz em varias linhas, só que por causa daquele FIRST 1 que tem ali, ele traz sempre o mesmo registro, e se eu tirar o FIRST 1 ele da erro.


Responder

Gostei + 0

30/11/2006

Emerson Nascimento

SET TERM ^ ; 

CREATE PROCEDURE SP_CPF_CNPJ 
RETURNS ( 
    CPF_CNPJ VARCHAR(20)) 
AS 
  DECLARE VARIABLE VALIDO INTEGER; 
  DECLARE VARIABLE TAMANHO VARCHAR(20); 
begin 
  for 
    select ent.codgeral, cpf_validarnum(ent.codgeral) 
    from cadentidades ent 
    into :tamanho,:valido do 
  begin 
    if (:valido = 0) then
      cpf_cnpj = cpf_formatar(tamanho);
    else
      cpf_cnpj = cnpj_formatar(tamanho);
    suspend; 
  end 

end 

^ 

SET TERM ; ^



Responder

Gostei + 0

30/11/2006

Blbacelar

Obrigado, funcionou!!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar