-2

Oracleにストアドプロシージャがあります

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

パラメータを処理するにはどうすればよいですか?

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

1 に答える 1

-2

http://pocoproject.org/docs-1.5.0/00200-DataUserManual.htmlのストアド プロシージャと関数のサポートについてのリード

ストアド プロシージャと関数のサポート

最新のデータベース システムのほとんどは、ストアド プロシージャや関数をサポートしています。Poco::Data はサポートを提供していますか? あなたは賭けます。正確に何が可能かについての詳細 (たとえば、入出力されるデータ型、自動または手動のデータ バインディング、バインディングの方向など) は、最終的にはデータベースに依存しますが、POCO Data は、in、 out および io バインディング関数。その名前が示すように、これらの関数は、ストアド プロシージャから受け渡す、またはストアド プロシージャから受け取る、あるいはその両方のパラメータ バインドを実行します。コードは何千語もの価値があるため、Oracle ODBC の例を次に示します。

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

ストアド プロシージャは、データ セット (別名カーソル) を返すことができます。

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;

上記のコードは、Oracle データベースで動作します。

于 2016-03-22T00:27:06.553 に答える