Frage : Hinweis-Kanaille

Ich habe folgenden Cursor, den ich zurückbringen wünsche, während heraus Parameter using einen Speicher Proc.
I dieses refcursor zurückbringen möchten nur wenn ROWCOUNT > 0. Sonst leere Rückholaufzeichnung set.
How kann ich ein PLSQL Speicherverfahren schreiben, die das refcursor zurückbringen?
When, welches die Aufzeichnungen erhalten verarbeitet wir sind, möchten sich mit FÜR UPDATE-ZEILENSPRUNG LOCKED.

Thanks
verriegeln
1:
2:
3:
4:
5:
SELECT ENO, ENAME, SALZ VOM ANGESTELLTEN
WO SALZ >=: V_LIMIT
UND DEPTNO =: V_DEPT
UND ROWNUM < 500
AUFTRAG DURCH ENO;

Antwort : Hinweis-Kanaille

Die schnelle Antwort ist Sie kann das wirklich nicht tun.

Es gibt nicht eine Weise, die Reihen zu überprüfen, die in einen Cursor es sei denn für Reichweite sie zurückgebracht. sobald Sie sie holen, können Sie den Cursor nicht zurück zu der ersten Reihe zurückstellen.

Wenn die Frage verhältnismäßig schnell läuft, können Sie die erste Reihe vorwählen, um zu sehen, wenn es mindestens eine Reihe gibt.
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:
28:
29:
30:
31:
32:
33:
34:
35:
6:
37:
38:
39:
40:
Bereinigung der Tropfentabelle tab1;
Tabelle tab1 (Putzfrau col1, herstellen (1));

in Werte tab1 („a ") einsetzen;
in Werte tab1 („a ") einsetzen;
in Werte tab1 („a ") einsetzen;
festlegen;


das Verfahren myProc verursachen oder ersetzen (inChar in der Putzfrau, outCur heraus im sys_refcursor)
ist
	tmpChar Putzfrau (1);
anfangen

	--auf Daten vor dem Rest des Codes überprüfen
	anfangen
		„x“ in tmpChar von tab1 vorwählen in dem col1=inChar und rownum=1;
		Ausnahme
			wenn NO_DATA_FOUND dann
				raise_application_error (- 20002, „keine Daten fanden.  Nicht kann continue.");
	Ende;


	outCur für auserwähltes col1 von tab1 öffnen in dem col1=inChar;


Ende;
/

Störungen zeigen


--mit SQL*Plus-Variablen prüfen
var myCur refcursor

exec myProc („a“: myCur);

Druck myCur

exec myProc („b“: myCur);
Weitere Lösungen  
 
programming4us programming4us