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.