VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

调用存储过程

采用预编译SQL的方式执行存储过程:

1)使用SQLPrepare准备待执行的SQL,其中函数的调用形式为{call funcname(?,...)}

2)使用SQLBindParameter绑定待调用的函数的参数

3)使用SQLExecute执行SQL

4)使用SQLFetch和SQLGetData获取执行结果

例子:

/*获取语句句柄*/
rc = SQLAllocHandle(SQL_HANDLE_STMT, V_OD_hdbc, &V_OD_hstmt);
/*预编译SQL,调用函数时使用{call funcname(?,...)} */
SQLPrepare(V_OD_hstmt, (SQLCHAR *) "{ call length(?) }", SQL_NTS);
cbParams[paramno] = SQL_NTS;
/*绑定参数 */
SQLBindParameter(V_OD_hstmt, 1, SQL_PARAM_INPUT,
        SQL_C_CHAR, /* value type */
        SQL_CHAR,       /* param type */
          20,         /* column size */
          0,          /* dec digits */
          (SQLCHAR*)"testvalue",      /* param value ptr */
          0,          /* buffer len */
          NULL        /* StrLen_or_IndPtr */);
/*执行*/
SQLExecute(V_OD_hstmt);
/* 获取执行结果 */
rc =SQLFetch(V_OD_hstmt);
/* 通过SQLGetData获取并返回数据。*/
while(rc != SQL_NO_DATA)
{
      char buf[40];
      SQLLEN ind;
      SQLGetData(V_OD_hstmt, 1, SQL_C_CHAR, buf, sizeof(buf), &ind);
      printf("SQLGetData ----ID = %s\n",buf);
      rc = SQLFetch(V_OD_hstmt);
 };