2016-11-03 7 views
0

Ich habe eine Prozedur, die ein Argument dauert. Und ich möchte einen Cursor durch die Abfrage basierend auf diesem Argument führen.Dynamischer Cursor von der Prozedur Argument

Zum Beispiel:

das Argument übergeben wird: Gehalt

der Cursor sein (Gehalt von emp auswählen) und sollte Schleife durch.

Wie soll ich das tun?

+0

Welche DBMS verwenden Sie? –

+0

Oracle-Datenbank. –

+0

Sieht aus, als ob Sie die dynamische SQL-Konstruktion ['open for'] (http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/dynamic.htm#LNPLS629) möchten. –

Antwort

0
DECLARE @ARGUMENT VARCHAR(50) = 'salary'; 
DECLARE @CURSOR_BODY VARCHAR(MAX) = ' 
declare @variable varchar(max) 
declare cur cursor for 
select '+ @argument + ' from emp 
OPEN cur; 
FETCH NEXT FROM cur INTO @variable 
WHILE @@FETCH_STATUS=0 
    BEGIN 
    select @variable 
    FETCH NEXT FROM cur INTO @variable; 
    END 
CLOSE cur 
DEALLOCATE cur' 

print @cursor_body 

EXEC (@CURSOR_BODY) 

Probieren Sie etw. Akk. wie diese

Verwandte Themen