2017-10-26 1 views
-2

Unten ist mein CodeKann ein a mit Return-Cursor in DB2 parametrisiert werden?

CREATE OR REPLACE PROCEDURE ds_grp_heatmap_product_test() 
SPECIFIC ds_grp_heatmap_product_test 
LANGUAGE SQL 
MODIFIES SQL DATA 
DYNAMIC RESULT SETS 1 
BEGIN 
     DECLARE c_hm_report(v_sal INTEGER)      
     CURSOR WITH RETURN FOR 
     select * 
     from emp where salary<v_sal; 
    open c_hm_report(2000); 
END; 

Dieser Code eine Idee Kompilierung Fehler geben, was ich falsch mache.

+0

Seine 'DB2' oder' PLSQL' sind beide unterschiedlich – XING

+0

Seine plsql in DB2. –

+0

'PLSQL' ist Eigentum von' Oracle'. Sie müssen Ihre Frage etwas als 'Prozedur in DB2' umbenennen und das' PLSQL'-Tag entfernen – XING

Antwort

1

Ihr Code ist SQLPL (im Gegensatz zu PLSQL). Abhängig von Ihrer Db2 Server Version und Konfiguration können Sie auch PLSQL (Oracle Kompatibilitätsmodus von Db2) schreiben. Sie erhalten Kompilierungsfehler, da die obige Syntax für SQLPL nicht gültig ist.

Der folgende Code könnte sein, was Sie suchen: die Parameter in diesem Fall als eine Eingabe an die gespeicherte Prozedur zugeführt wird, passen Sie die Art, wie erforderlich, oder die Variable v_sal über andere Mittel einstellen:

--#SET TERMINATOR @ 
CREATE OR REPLACE PROCEDURE ds_grp_heatmap_product_test (in v_sal integer) 
SPECIFIC ds_grp_heatmap_product_test 
LANGUAGE SQL 
MODIFIES SQL DATA 
DYNAMIC RESULT SETS 1 
BEGIN 
     DECLARE c1 CURSOR WITH RETURN FOR 
     select * 
     from emp where salary < v_sal; 
    open c1; 
END 
@ 
Verwandte Themen