PL/SQL: TYPED REF CURSOR
Olá pessoal !
Um camarada developer me questionou sobre TYPED REF CURSOR, dizendo que tinha lido que haviam tipos diferentes, só que ele não sabia quais eram e quais as diferenças entre ambos.
Na verdade, existem dois tipos: Forte (Strongly) e o Fraco (Weakly), que tem de diferente entre si, a definição de sua estrutura e seu retorno.
Um exemplo prático, seria que no Forte (Strongly) , há a verificação da estrutura de dados em tempo de compilação e no Fraco (Weakly) em tempo de execução.
Exemplo REF CURSOR Strongly:
CREATE OR REPLACE FUNCTION fTesteStrong
RETURN SYS_REFCURSOR
IS
TYPE teste_row IS RECORD
(
codigo teste.codigo%TYPE
,descr teste.descr%TYPE
);
TYPE teste_strong IS REF CURSOR RETURN teste_row;
cTS teste_strong;
BEGIN
OPEN cTS FOR
SELECT codigo,
descr
FROM teste;
RETURN(cTS);
END fTesteStrong;
Exemplo REF CURSOR Weakly:
CREATE OR REPLACE FUNCTION fTesteWeak
RETURN SYS_REFCURSOR IS
cTS SYS_REFCURSOR;
BEGIN
OPEN cTS FOR
SELECT codigo,
descr
FROM teste;
RETURN cTS;
END fTesteWeak;
Está aí o conceito de Strongly e Weakly TYPE REF CURSOR ! J
Abraço