Como testar uma procedure Oracle que tem um cursor como saída

Para os iniciantes com desenvolvimento Oracle, este post pode ser salvador. Enfrento um cenário recorrente, testar objetos em uma base de dados que não tenho acesso para visualizá-los. Muitas vezes, meus programas enfrentam erros e por não conseguir ver a base de dados, fico totalmente às cegas.

Durante uma situação como esta, quando eu precisava saber se o problema estava na procedure Oracle ou no meu programa java, desenvolvi o trecho abaixo para ser executado no PL/SQL e validar as colunas devolvidas pela minha procedure. Era a primeira vez que eu tinha que fazer isso com uma procedure que não devolvia dados e sim um cursor.

Vamos ao trecho de código que imprime as colunas retornadas pela procedure:

p_cursor SYS_REFCURSOR;
c_          NUMBER;
col_count_  NUMBER;
desc_tab_   DBMS_SQL.DESC_TAB;

begin
— Call the procedure
pr_consulta_compras_cliente(‘Ana’, ‘1245896325’, ’01/08/2013′,’30/08/2013′, p_cursor);
c_ := DBMS_SQL.to_cursor_number(p_cursor);
DBMS_SQL.DESCRIBE_COLUMNS(c_, col_count_, desc_tab_);

FOR i_ IN 1..col_count_ LOOP
DBMS_OUTPUT.PUT_LINE(desc_tab_(i_).col_name);
END LOOP;

DBMS_SQL.CLOSE_CURSOR(c_);

end;

Deixe um comentário

Este site utiliza o Akismet para reduzir spam. Fica a saber como são processados os dados dos comentários.

Site no WordPress.com.

EM CIMA ↑