Frage : dynamic_cursor

Wenn ich ein Verfahren mit einem Cursor wie this

CURSOR my_list
AUSERWÄHLTES IS
habe * VON TABLE1, TABELLE 2
WHERE.
möchten
UND Verkäufer wie p_vendcode


Benutzer in der Lage sein, Frage mit Filter auf vendcode laufen zu lassen und ohne filter.

dort eine Weise der gleiche Cursor, der auf dem Wert basiert, der mit „p_vendcode“ geführt wird oder tut ich muss cursors
bilden zwei und den passenden one.
zu benutzen
The Cursor ist mit einigen ANSCHLÜSSEN, etc. sehr lang. Es würde einfacher sein, wenn ich it

I ändern kann denke, dass eine Wahl, das zu ändern ist, um Variable zu binden und etwas like

If (p_flag ist „F "), Then
open my_cursor using dann zu tun: p_vendcode
else
open mein _cursor using 1=1
end wenn;

Antwort : dynamic_cursor

Das folgende einfache Musterbeispiel heraus überprüfen.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
Bereinigung der Tabelle tab1 fallenlassen;
Tabelle tab1 (Verkäuferputzfrau (1)) herstellen;

in Werte tab1 („A ") einsetzen;
in Werte tab1 („B ") einsetzen;
in Werte tab1 („D ") einsetzen;
festlegen;


Verfahren myProc (p_filter in der Putzfrau, p_vendcode in der Putzfrau) verursachen oder ersetzen
ist
	my_var	varchar2 (100);
	myCur	sys_refcursor;
	myResult Putzfrau (1);
anfangen

	My_var: wie = „auserwählter Verkäufer von tab1, dem Verkäufer decodieren (''' || p_filter || ''', '' A '', '' % '', '' F '', ''' || p_vendcode|| ''')“;

	myCur für my_var öffnen;
	myCur in myResult holen;
	dbms_output.put_line („erhalten: “ || myResult);
	nahes myCur;
Ende;
/

exec myProc („A“, „B ");
exec myProc („F“, „D ");
Weitere Lösungen  
 
programming4us programming4us