Stored Procedure retornar mais de um valor
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
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
Curtidas 0
Respostas
Emerson Nascimento
30/11/2006
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 ; ^
GOSTEI 0
Blbacelar
30/11/2006
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.
GOSTEI 0
Emerson Nascimento
30/11/2006
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 ; ^
GOSTEI 0
Blbacelar
30/11/2006
Obrigado, funcionou!!
GOSTEI 0