ODBC Driver for Acumatica

Build 20.0.7587

ストアドプロシージャの実行

ストアドプロシージャの呼び出し手順

SQLExecDirect を使用してストアドプロシージャを呼び出し、SQLFetch とSQLGetData を使用してその結果を反復処理します。次の例は、CALL 構文を示します。EXECUTE ステートメント で詳しく説明されているEXECUTE 構文を使用することもできます。


  SQLHENV henv;
  SQLHDBC hdbc;
  SQLLEN cbObjectName = SQL_NTS;
  if (SQLAllocHandle(SQL_HANDLE_ENV, 0 ,&henv) == SQL_SUCCESS) {
    SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0); 
    if (SQLAllocHandle(SQL_HANDLE_DBC, henv ,&hdbc) == SQL_SUCCESS) {
      if (SQLConnect(hdbc, "CData Acumatica Source", SQL_NTS, 0, 0, 0, 0) == SQL_SUCCESS) {
        SQLHSTMT hstmt;
        SQLAllocHandle(SQL_HANDLE_STMT, hdbc ,&hstmt); 
        if (SQLExecDirect(hstmt, (SQLCHAR*)"{?=call CreateJob('Account', 'Insert')}", SQL_NTS) == SQL_SUCCESS) {
        if (SQLExecDirect(hstmt, "{?=call SendMail('abc123')}", SQL_NTS) == SQL_SUCCESS) {
          char sCreatedById[255] = {0};
          SQLLEN cbsCreatedById = 0;
          while(SQLFetch(hstmt) == SQL_SUCCESS) {
            SQLGetData(hstmt, 2, SQL_C_CHAR, (SQLPOINTER)sCreatedById, 255, &cbsCreatedById);
            printf("CreatedById: %s\n", sCreatedById);
          }
        }
        SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
        SQLDisconnect(hdbc);
      }
      SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
    }
    SQLFreeHandle(SQL_HANDLE_ENV, henv);
  }

Copyright (c) 2020 CData Software, Inc. - All rights reserved.
Build 20.0.7587