J'ai un tas de fonctions avec des signatures comme:Comment obtenir un enregistrement en utilisant EXECUTE IMMEDIATE?
FUNCTION func1 (par1 IN VARCHAR2, par2 IN NUMBER) RETURN my_rec;
et j'ai une fonction pour récupérer les données de ce groupe de fonctions:
FUNCTION get_result (func_name IN VARCHAR2, par1 IN VARCHAR2, par2 IN NUMBER) RETURN my_rec;
IS
rec1 my_rec;
BEGIN
EXECUTE IMMEDIATE 'SELECT ' || func_name || '(:par1, :par2) FROM DUAL'
INTO rec1
USING IN par1, IN par2;
RETURN rec1;
END;
mais ce code échoue avec ORA-01007 « variable pas dans la liste de sélection '.
Comment puis-je réécrire une instruction?
cela fonctionne quand je définis my_rec en tant que type d'objet, mais ne fonctionne pas lorsque my_rec est défini comme type d'enregistrement dans le package. Avez-vous une idée pourquoi? – engro
@ negr-o, un type d'enregistrement dans un paquet n'est connu que dans PL/SQL, vous ne pouvez pas l'utiliser dans SQL. – tuinstoel
2 tuinstoel: merci! – engro