- Este tópico contém 5 respostas, 2 vozes e foi atualizado pela última vez 17 anos, 10 meses atrás por chduarte.
-
AutorPosts
-
11 de abril de 2007 às 5:07 pm #79204nandainiParticipante
Bom dia pessoal!
Sou novata em Oracle e estou usando como ferramenta de trabalho o SQL Developer.
Fiz uma procedure que contém alguns parâmetros de entrada inclusive um cursor, porém, não estou sabendo testar essa procedure.
Alguém poderia me ajudar?
Esse é o cabeçalho da procedure:
PROCEDURE PRC_PESSOA_BUSCA (
pcod_operacao IN TB_VEN_PESSOA.cod_operacao%TYPE
, pvcpo IN TB_VEN_PESSOA.COD_CLIENTE_CRED%TYPE
, pnom_pessoa IN TB_VEN_PESSOA.nom_pessoa%TYPE
, ptel_ddd IN TB_VEN_PESSOA_TELEFONE.TEL_DDD_INICIAL %TYPE
, ptel_numero IN TB_VEN_PESSOA_TELEFONE.TEL_NUMERO_INICIAL%TYPE
, out_cursor IN OUT t_cursor
);Como faço para chamar essa procedure no SQL Developer passando os parâmetros?
Obrigada!
11 de abril de 2007 às 5:09 pm #79205chduarteParticipantebegin
PRC_PESSOA_BUSCA(‘valor’,’valor’,00,’valor’);
end;Pressione F5
[]
11 de abril de 2007 às 5:25 pm #79207nandainiParticipanteOlá, obrigada pela ajuda
Estou executando a procedure com 5 parâmetros sem o 6º parâmetro (que seria o cursor) conforme abaixo:
begin
pkg_ven_resgate_v2.PRC_PESSOA_BUSCA(221,null,null,null,null);
end;recebo o seguinte erro:
PLS-00306: wrong number or types of arguments in call to ‘PRC_PESSOA_BUSCA’Quando executo como o 6º parâmetro:
begin
pkg_ven_resgate_v2.PRC_PESSOA_BUSCA(221,null,null,null,null,null);
end;recebo o seguinte erro:
PLS-00567: cannot pass NULL to a NOT NULL constrained formal parameterAcredito que seja necessário declarar uma variável para o 6º parâmetro, porém não sei como fazer isso.
Pode me ajudar?
PS: essa procedure faz um select simples no banco.
Obrigada!
11 de abril de 2007 às 5:29 pm #79209chduarteParticipanteSe vc criou a procedure com 5 parametros, precisa passar 5 parametros a nao ser que exista valores default.
O erro é porque vc esta passando um valor nulo a procedure precisa de um valor.
Para declarar um variavel use o declare:
declare
x number;
begin
x := 0;
sua_procedure(‘valor’,’valor’,’valor’,x);
end;No site tahiti.oracle.com procure por PL/SQL e tera toda a documentacao para desenvolvimento.
[]
11 de abril de 2007 às 5:41 pm #79211nandainiParticipanteCarlos,
Já fiz o teste passando valores válidos para os parâmetros, mas como devo declarar uma variável para receber o conteúdo do 6º parâmetro sabendo que ele é o retorno da procedure?Acredito que para esse parâmetro eu teria que declarar de alguma forma para que me apresentasse as linhas de retorno da procedure.
Já procurei na net situações semelhantes, mas não encontrei algo que pudesse me ajudar.
aí vai a procedure:
PROCEDURE PRC_PESSOA_BUSCA (
pcod_operacao IN TB_VEN_PESSOA.cod_operacao%TYPE
, pvcpo IN TB_VEN_PESSOA.COD_CLIENTE_CRED%TYPE
, pnom_pessoa IN TB_VEN_PESSOA.nom_pessoa%TYPE
, ptel_ddd IN TB_VEN_PESSOA_TELEFONE.TEL_DDD_INICIAL %TYPE
, ptel_numero IN TB_VEN_PESSOA_TELEFONE.TEL_NUMERO_INICIAL%TYPE
, out_cursor IN OUT t_cursor
)IS lcursor t_cursor; vsql varchar2(32767); BEGIN vsql := ''; vsql := vsql || ' SELECT '|| CHR(10); vsql := vsql || ' DISTINCT '|| CHR(10); vsql := vsql || ' COD_CLIENTE_CRED '|| CHR(10); vsql := vsql || ' , PES.END_LOGRADOURO '|| CHR(10); vsql := vsql || ' , PES.END_COMPLEMENTO '|| CHR(10); vsql := vsql || ' FROM '|| CHR(10); vsql := vsql || ' TB_VEN_PESSOA PES '|| CHR(10); vsql := vsql || ' , TB_VEN_PESSOA_TELEFONE TEL '|| CHR(10); vsql := vsql || ' WHERE '|| CHR(10); vsql := vsql || ' PES.COD_OPERACAO = '''||pcod_operacao ||''''|| CHR(10); IF ptel_ddd IS NOT NULL THEN vsql := vsql || ' AND PES.COD_OPERACAO = TEL.COD_OPERACAO '|| CHR(10); vsql := vsql || ' AND PES.COD_PESSOA = TEL.COD_PESSOA '|| CHR(10); END IF; IF pvcpo IS NOT NULL THEN vsql := vsql || ' AND COD_CLIENTE_CRED = '''||pvcpo ||''' '|| CHR(10); END IF; IF pnom_pessoa IS NOT NULL THEN vsql := vsql || ' AND PES.NOM_PESSOA LIKE UPPER('''||pnom_pessoa||''') || ''%'')) '|| CHR(10); END IF; vsql := vsql || ' AND ROWNUM < 100 '|| CHR(10); vsql := vsql || ' ORDER BY PES.NOM_PESSOA'; OPEN lcursor FOR vsql; out_cursor := lcursor; END;
11 de abril de 2007 às 6:16 pm #79219chduarteParticipanteout_cursor nao precisa ser IN OUT. Pode ser somente out.
garanta que este type t_cursor exista.
declare
inout_cursor t_cursor;
begin
proc(xxx,xxx,xxx,xxx,inout_cursor);
end;[]
-
AutorPosts
- Você deve fazer login para responder a este tópico.