基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
Call Function
更新时间:2026-04-09 15:10:59
OceanBase Connector/ODBC 支持 Call Function 命令,语法如下:
{call func_name()}
Call Function 命令在实际的执行过程中会转换成如下语句:
BEGIN
func_name()
END;
示例如下:
ODBC_TEST(test_func_normal)
{
SQLRETURN ret = 0;
SQLLEN outLen = 0;
char *createpl = "create or replace function query_bench(str in varchar2) RETURN varchar2 IS\n"
" l_rst varchar2(100);\n"
"begin\n"
" l_rst:='1234455';\n"
" RETURN l_rst;\n"
"end query_bench;";
CHECK_STMT_RC(Stmt, ret = SQLPrepare(Stmt, (SQLCHAR*)createpl, (SQLINTEGER)strlen((char*)createpl)));
CHECK_STMT_RC(Stmt, ret = SQLExecute(Stmt));
CHECK_STMT_RC(Stmt, ret = SQLFreeStmt(Stmt, SQL_CLOSE));
SQLEndTran(SQL_HANDLE_DBC, Connection, SQL_COMMIT);
SQLRETURN rcode;
char *pCall = (char*)"{ ? = call QUERY_BENCH(?)}";
char buf1[100] = { 0 };
char buf2[100] = { 0 };
SQLLEN inOut = SQL_NTS;
rcode = SQLPrepare(Stmt, (SQLCHAR*)pCall, strlen(pCall));
CHECK_STMT_RC(Stmt, rcode);
rcode = SQLBindParameter(Stmt, 1, SQL_PARAM_OUTPUT, SQL_C_CHAR, SQL_CHAR, 0, 0, buf1, 100, &inOut);
rcode = SQLBindParameter(Stmt, 2, SQL_PARAM_OUTPUT, SQL_C_CHAR, SQL_CHAR, 0, 0, buf2, 100, &inOut);
rcode = SQLExecute(Stmt);
CHECK_STMT_RC(Stmt, rcode);
printf("buf2=%s\n", buf1);
return OK;
}