2016-03-21 8 views
-3

私はどのようにパラメータを扱うことができる NPOCO PL/SQLのHANDELING OUTパラメータ

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

にストアドプロシージャをしていますか?ストアドプロシージャと関数について

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

答えて

-1

リードはhttp://pocoproject.org/docs-1.5.0/00200-DataUserManual.html

ストアドプロシージャにサポートし、機能

近代的なデータベースシステムのほとんどはストアドプロシージャおよび/または機能をサポートしてサポートしています。 Poco :: Dataはサポートしていますか?あなたは賭ける。 POCO Dataは、正確に可能なもの(具体的には、データのタイプの出入り、自動または手動のデータバインディング、バインディング方向など)は最終的にデータベースに依存しますが、POCO Dataは、 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データベースで動作します。

関連する問題