Oracle: Retourner plusieurs valeurs dans une fonction
Je suis en train de retourner plusieurs valeurs en %rowtype à partir d'une fonction à l'aide de deux table(les employés et les départements), mais il ne fonctionne pas pour moi.
create or replace function get_employee
(loc in number)
return mv_emp%rowtype
as
emp_record mv_emp%rowtype;
begin
select a.first_name, a.last_name, b.department_name into emp_record
from employees a, departments b
where a.department_id=b.department_id and location_id=loc;
return(emp_record);
end;
OriginalL'auteur Jamil Smith | 2012-05-31
Vous devez vous connecter pour publier un commentaire.
La fonction ci-dessus compilé sans erreur? Quel est le type de
MV_EMP
? Idéalement, il devrait être quelque chose comme ci-dessous.J'ai également eu à écrire cette syntaxe (11g):
SELECT x.some_field, y.something_else INTO myobject.field1, myobject.field2 FROM ...
J'ai eu l'initialisation de l'objet de la première aussi, comme ceci:
myobject mytype := mytype('', '');
Merci @andersand. Je l'ai fait en 10g et a été un succès.
OriginalL'auteur Guru
Nous allons maintenant créer une fonction qui va diviser la chaîne d'entrée.
Une fois que la fonction est en place, on peut utiliser le tableau de la clause de l'instruction sql pour obtenir le résultat souhaité. Comme souhaité, nous avons eu plusieurs valeurs renvoyées par la fonction.
Maintenant notre fonction est simplement de se comporter comme un tableau. Il peut y avoir une situation où vous voulez que ces valeurs séparées par des virgules pour être une partie de "DANS" la clause.
Par exemple :
Mais la requête ci-dessus ne fonctionnera pas comme "1,2,3,4" est une chaîne de caractères et non des numéros individuels. Pour résoudre ce problème, vous pouvez simplement utiliser la requête suivante.
Références : http://www.oraclebin.com/2012/12/returning-multiple-values-from-function.html
OriginalL'auteur Sushant Butta