Question

Quelqu'un peut-il expliquer comment voir les résultats d'une procédure, tout fonctionne bien et le code est valide, exécuté et compilé sans erreur. Maintenant, comment puis-je voir les résultats sous forme de requêtes ou quoi que ce soit.

La procédure ex est sur le montant du salaire.

CREATE OR REPLACE PROCEDURE HR.TOTAL_SALARY AS    
   total_salary NUMBER(12,2);    
BEGIN    

  SET TRANSACTION READ ONLY;    

  SELECT SUM (salary) 
    INTO total_salary 
    FROM employees;    

  DBMS_OUTPUT.PUT_LINE('Total salary 1: ' || total_salary);     
  COMMIT;    

END; 
Était-ce utile?

La solution

Pour sortir les résultats d'une instruction select dans une procédure que vous devez utiliser un curseur.

create procedure myproc 
(in_variable IN number, out_records OUT sys_refcursor)
as
begin
open out_records for

select * from mytable
where column = in_variable;

end;

puis de l'utiliser, déclarer le curseur, exécuter le proc, et la sortie des résultats.

variable records refcursor;
exec myproc(1, :records);
print :records;

(aucune promesse que ce qui précède est syntaxiquement parfaite -.. Je suis loin de la DB maintenant, mais il devrait être assez proche pour vous mettre dans la bonne direction)

Oh -. Et vous pouvez utiliser un type de curseur défini par l'utilisateur à l'intérieur d'un ensemble, si cela est approprié pour votre environnement

Autres conseils

Courez-vous cela dans SQL * Plus? Avez-vous "ensemble SERVEROUTPUT sur;"?

Je recommande cette fonction

CREATE OR REPLACE FUNCTION HR.TOTAL_SALARY return number AS    
   total_salary NUMBER(12,2);    
BEGIN    

  SELECT SUM (salary) 
    INTO total_salary 
    FROM employees;    

return total_salary;

END; 

L'utilisation de c'est comme:

select hr.TOTAL_SALARY() as total_sal from dual.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top