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);
 };