2010-11-24 7 views
1

Hey Leute, ich habe eine gespeicherte Prozedur, die nur die Spalte einer Tabelle ausgibt. Stattdessen möchte ich "Es gibt" [Anzahl der Spalten] "Studenten". als eine Ausgabe. Beispiel unten.Stored Procedure Ausgabe String und Cursor

CREATE OR REPLACE PROCEDURE active_students (arc in out sys_refcursor) 
     as 
     begin 
      open arc for select count(*) from student; 
     end; 

Dies erzeugt

Count(*) 
30 

möchte es

There are 30 students. 

Antwort

2

Verwendung zum:

CREATE OR REPLACE PROCEDURE JSU4290M.active_students (arc in out sys_refcursor) 
AS 
BEGIN 

    OPEN arc FOR 
    SELECT 'There are '|| COUNT(*) ||' students.' AS col 
    FROM STUDENT; 

END; 

das Doppelrohr (||) ist Oracle (und jetzt ANSI Standard) Mittel zur Verkettung von Strings. Oracle konvertiert den Ganzzahlwert implizit in eine Zeichenfolge.

+0

@DatabaseDummy: Was meinst du mit "verstecken"? Sie sollten den Spaltennamen als Referenz verwenden, nicht die Position im Resultset, da sich die Position ändern könnte. Der Spaltenname kann sich ebenfalls ändern, ist jedoch weniger spröde. –

+0

@DatabaseDummy: Ich habe die Antwort aktualisiert, um den Spaltenalias "col" zu definieren. Sie können den Alias ​​in andere ASCII-Zeichen Ihrer Wahl ändern, ansonsten verwenden Sie doppelte Anführungszeichen, um Sonderzeichen zu verwenden (nicht, dass ich das empfehle). –