2016-09-23 4 views
0

Ich habe eine Prozedur in Oracle erstellt alsWie führe ich eine Prozedur mit Cursor-Ausgabe in Oracle?

create or replace procedure jobsfetch 
(id varchar2,jobcursor out sys_refcursor) 
as 
begin 
open jobcursor for 
    select * from shop.jobs where job_id = id; 
end; 

folge ich die Prozedur in SQL ausgeführt * Plus-Verwendung:

exec jobsfetch('AD_ASST'); 

Aber ich erhalte die folgenden Fehler

ERROR at line 1: 
ORA-06550: line 1, column 7: 
PLS-00306: wrong number or types of arguments in call to 'JOBSFETCH' 
ORA-06550: line 1, column 7: 
PL/SQL: Statement ignored 

Wie führe ich diese Prozedur aus, da sie nur einen Eingabeparameter hat?

+0

versuchen Sie diese URL https://oracle-base.com/articles/misc/using-ref-cursors-to-return-recordsets –

+1

Fehler Sie stehen vor coz, wenn die Anzahl der Argumente, die Sie an den Proc beim Aufruf übergeben . Sie proc dauert 2 Eingabe und in Sie rufen Sie nur 1 übergeben, daher erhalten Sie den Fehler – XING

Antwort

0

versuchen Sie dies:

variable CURSOR_LIST REFCURSOR; 
exec jobsfetch('AD_ASST',:CURSOR_LIST); 
print CURSOR_LIST; 
+0

Während dieses Code-Snippet die Frage lösen kann, [einschließlich einer Erklärung] (http://meta.stackexchange.com/questions/114762/ Das Erklären von Code-basierten Antworten hilft wirklich, die Qualität Ihres Posts zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. –

0

Sie einfach einen plsql Block verwenden:

declare 
    outCur sys_refcursor; 
begin 
    jobsfetch('AD_ASST', outCur); 
    /* what you need to do with the cursor */ 
end; 
0

Das Problem ist, dass Ihr Verfahren ein Out Parameter hat, aber Sie liefern es nicht.

Sie können nicht exec jobsfetch('AD_ASST'); Ich empfehle die ganze Sache in einen PLSQL-Block wie Aleksej.

declare 
    outCur sys_refcursor; 
begin 
    jobsfetch('AD_ASST', outCur); 
    /* what you need to do with the cursor */ 
end; 

Dadurch werden Sie den Cursor, die Sie in outCur geöffnet und Sie können Sie tun, was damit zu tun brauchen.

Verwandte Themen