11
votes

Oracle SQL Developer: Comment afficher les résultats d'un curseur REF?

Si j'ai une fonction qui renvoie un curseur de référence pour une requête, comment puis-je voir le jeu de résultats de cela dans le développeur SQL? TOAD a un onglet spécial pour visualiser les résultats d'un curseur de référence, c'est la fonctionnalité que je voudrais trouver.


0 commentaires

4 Réponses :


7
votes

double-cliquez sur les champs de curseur de votre enregistrement de résultat. Sur le côté droit, il y a une icône "...". Cliquez dessus et vous verrez le contenu


1 commentaires

S'applique également au développeur PL / SQL.



7
votes

Bonjour, je sais que cela a été posé il y a quelque temps mais je viens de comprendre cela et cela pourrait aider quelqu'un d'autre. Je ne sais pas si c'est exactement ce que vous recherchez, mais c'est comme ça que j'appelle un processus stocké et afficher la sortie dans SQL Developer.
Dans SQL Developer Lors de la visualisation de la part, cliquez avec le bouton droit de la souris et choisissez "Exécuter" ou sélectionnez Ctrl + F11 pour afficher la fenêtre Run PL / SQL. Cela crée un modèle avec les paramètres d'entrée et de sortie que vous devez modifier. Pour renvoyer les résultats d'un SYS_ReFcursor, vous devez ensuite déclarer un type de ligne exactement em> équivalent au Select STMT / SYS_ReFcursor étant renvoyé par la proc. Ci-dessous, je déclare "type t_row" qui correspond à mes champs de sortie, puis en boucle via Sys_Refcursurs retourné. Si t_row correspond à mon sys_refcursor, il est renseigné avec chaque ligne du SYS_Refcursor:

DECLARE
  P_CAE_SEC_ID_N NUMBER;
  P_FM_SEC_CODE_C VARCHAR2(200);
  P_PAGE_INDEX NUMBER;
  P_PAGE_SIZE NUMBER;
  v_Return sys_refcursor;
  type t_row is record (CAE_SEC_ID NUMBER,FM_SEC_CODE VARCHAR2(7),rownum number, v_total_count number);
  v_rec t_row;

BEGIN
  P_CAE_SEC_ID_N := NULL;
  P_FM_SEC_CODE_C := NULL;
  P_PAGE_INDEX := 0;
  P_PAGE_SIZE := 25;

  CAE_FOF_SECURITY_PKG.GET_LIST_FOF_SECURITY(
    P_CAE_SEC_ID_N => P_CAE_SEC_ID_N,
    P_FM_SEC_CODE_C => P_FM_SEC_CODE_C,
    P_PAGE_INDEX => P_PAGE_INDEX,
    P_PAGE_SIZE => P_PAGE_SIZE,
    P_FOF_SEC_REFCUR => v_Return
  );
  -- Modify the code to output the variable
  -- DBMS_OUTPUT.PUT_LINE('P_FOF_SEC_REFCUR = ');
  loop
    fetch v_Return into v_rec;
    exit when v_Return%notfound;
    DBMS_OUTPUT.PUT_LINE('sec_id = ' || v_rec.CAE_SEC_ID || 'sec code = ' ||v_rec.FM_SEC_CODE);
  end loop;

END;


0 commentaires

1
votes

Il n'y a aucun moyen d'afficher un Refcurseur dans DataGrid dans SQLDEveloper. Nous pouvons définir un Refcursor, appeler SP, puis imprimer Refcursor, puis les données seront imprimées dans la fenêtre de sortie de script dans un mode de texte de plan, mais pas dans la fenêtre de résultat de la requête.


0 commentaires

8
votes
SET SERVEROUTPUT ON;
VARIABLE X REFCURSOR;
EXEC PROCEDURE_WITH_OUTPUT_SYS_REFCURSOR(:X);
PRINT X;

2 commentaires

Savez-vous comment définir une variable pour transmettre en tant que paramètre. (En conjonction avec le curseur. Dans mon code ici ... J'essaie de créer et de définir une variable pour "pin_customer_last_name_string". / * / var v_customer_cursor Refcursor; / / i> / i> / exec myschema01 .Mypackage01.myproceduture01 (pin_customer_last_name_string => 'Smith', Pout_Customer_cursor =>: v_customer_cursor); / / imprimer v_customer_cursor; / * /


Je ne peux même pas regarder ça ... Mon travail ne me met pas devant un DB Oracle ces jours-ci.