| Installation | Types | Basic Operations | Prepared Statements | Stored Procedures | Database information |
How to invoke stored procedures/functions.
Content of this chapter: |
RString sql; if (dmd->getDatabaseProductName()->equals("Oracle") == true) { sql = "CREATE PROCEDURE acdk_sql_function(instr in varchar2, innum in integer, outstr out varchar2, outnum out integer) AS\n" "begin\n" " outstr:=CONCAT(instr, ' SQL');\n" " outnum:=innum + 1;\n" "end;" ; } else // asume MS SQL 2000 { sql = "CREATE PROCEDURE acdk_sql_function @instr varchar(20), @innum SMALLINT, @outstr varchar(20) OUTPUT, @outnum SMALLINT OUTPUT\n" "AS\n" "SET @outstr = @instr + ' SQL'\n" //"print @outstr\n" "SET @outnum = @innum + 1\n" ; } RStatement statement = connection->createStatement(); int rows = statement->executeUpdate(sql); |
RString sql = "{ CALL acdk_sql_function ( ?, ?, ?, ?) }"; RCallableStatement statement = connection->prepareCall(sql); statement->setString(1, "ACDK"); statement->setInt(2, 42); statement->registerOutParameter(3, ::acdk::sql::NativeVarCharSqlType); statement->registerOutParameter(4, ::acdk::sql::IntegerSqlType); int count = statement->executeUpdate(); RString serg = statement->getString(3); //serg = serg->convert(CCAscii); System::out->println("Erg is: " + serg); testAssert(serg->equals("ACDK SQL") == true); int ierg = statement->getInt(4); testAssert(ierg == 43); |