2016-03-21 8 views
-3

Ich habe gespeicherte Prozedur in OracleNPOCO PL/SQL handeling PARAMETER OUT

CREATE OR REPLACE PROCEDURE procTest (p_param1 varchar2, p_param2 out varchar2) 
AS 
BEGIN 
... 
END; 

Wie kann ich Parameter Griff aus?

_db.Execute("EXEC procTest ('dsds')"); 

Antwort

-1

Reed über gespeicherte Prozeduren und Funktionen Unterstützung auf http://pocoproject.org/docs-1.5.0/00200-DataUserManual.html

gespeicherte Prozeduren und Funktionen Unterstützung

Die meisten modernen Datenbanksysteme unterstützen gespeicherte Prozeduren und/oder Funktionen. Unterstützt Poco :: Data dort Unterstützung? Sie wetten. Während die genauen Angaben darüber, was genau möglich ist (z. B. die ein- und ausgetauschten Datentypen, automatische oder manuelle Datenbindung, Bindungsrichtung usw.) letztendlich datenbankabhängig sind, bietet POCO Data den besten Zugang zu solchen Funktionen durch out und io bindende Funktionen. Wie ihre Namen andeuten, führen diese Funktionen Parameter aus, die an die gespeicherten Prozeduren oder an beide übergeben werden. Der Code ist tausend Worte wert, also hier ein Oracle ODBC Beispiel:

session << "CREATE OR REPLACE " 
    "FUNCTION storedFunction(param1 IN OUT NUMBER, param2 IN OUT NUMBER) RETURN NUMBER IS " 
    " temp NUMBER := param1; " 
    " BEGIN param1 := param2; param2 := temp; RETURN(param1+param2); " 
    " END storedFunction;" , now; 

int i = 1, j = 2, result = 0; 
session << "{? = call storedFunction(?, ?)}", out(result), io(i), io(j), now; // i = 2, j = 1, result = 3 

Stored Procedures dürfen Datensätze (auch bekannt als Cursor) zurück:

typedef Tuple<std::string, std::string, std::string, int> Person; 
std::vector<Person> people; 
int age = 13; 
session << "CREATE OR REPLACE " 
    "FUNCTION storedCursorFunction(ageLimit IN NUMBER) RETURN SYS_REFCURSOR IS " 
    " ret SYS_REFCURSOR; " 
    "BEGIN " 
    " OPEN ret FOR " 
    " SELECT * FROM Person WHERE Age < ageLimit; " 
    " RETURN ret; " 
    "END storedCursorFunction;" , now; 

session << "{call storedCursorFunction(?)}", in(age), into(people), now; 

Die Der oben gezeigte Code funktioniert mit Oracle-Datenbanken.