Je tente d'écrire un proc stocké qui prend un nombre, n, et renvoie les n premiers résultats pour une requête donnée, en verrouillant exclusivement ces n lignes. Je suis un peu nouveau sur SQL et j'ai un peu de difficulté à faire correspondre correctement les types de données.problème de définition du curseur de référence faiblement défini
Mon spec paquet ressemble à ceci:
PACKAGE package IS
Type out_result_type is REF CURSOR;
PROCEDURE stored_proc
(in_n IN NUMBER DEFAULT 10,
out_list IN OUT out_result_type);
Je Réglez ensuite le curseur dans le corps de la procédure, comme suit:
CURSOR OUT_RESULT_TYPE IS
SELECT a.id
FROM schema.table a
WHERE (some conditions) AND rownum <= in_n;
Un peu plus tard, j'essaie ensuite d'extraire les résultats de le curseur dans la variable de sortie:
OPEN OUT_RESULT_TYPE;
FETCH OUT_RESULT_TYPE INTO out_list; -- error on this line
CLOSE OUT_RESULT_TYPE;
Mais hélas, ce code ne compile pas; Oracle se plaint que out_list a déjà été défini avec un type de données en conflit. Une idée de comment je peux résoudre ce problème? Ça me rend fou!
Merci d'avance.
Pourquoi ne pas utiliser sys_refcursor? – tuinstoel
@tuinstoel: J'oublie toujours qu'il existe :) – Quassnoi
Merci, c'était très utile –