ODBC Driver for Workday

Build 22.0.8479

データのクエリ

接続 後、ステートメントハンドルを割り当てて、ステートメントを実行できます。

SELECT プロシージャ

ステートメントを実行するにはSQLExecDirect を使用し、レコードをフェッチするにはSQLFetch を使用します。SQLBindCol を使用して、結果セットのカラムに変数をバインドできます。結果セットのカラムの番号は1から始まります。

SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv); 
SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0); 
SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc); 
SQLDriverConnect(hdbc, 0, (SQLCHAR*)"Dsn=CData Workday Source", SQL_NTS, 0, 0, 0, 0);
SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
SQLExecDirect(hstmt, (SQLCHAR*)"SELECT Legal_Name_Last_Name FROM [CData].[Human_Resources].Workers WHERE Legal_Name_Last_Name = 'Morgan'", SQL_NTS);  
SQLCHAR sLegal_Name_Last_Name[20] = {0};
SQLLEN cbLegal_Name_Last_Name = 0;
SQLBindCol(hstmt, 1, SQL_C_CHAR, sLegal_Name_Last_Name, 20, &cbLegal_Name_Last_Name);
SQLRETURN retcode = SQLFetch(hstmt);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
 ...
}

結果の反復処理

SQLGetData を使用して、カーソルを反復処理しながら値を取得できます。結果を反復処理するには、SQLFetch を使用して行をフェッチし、SQLGetData を使用してカラム値を取得します。

  SQLHENV henv;
  SQLHDBC hdbc;
  SQLHSTMT hstmt;
  char sWorker_Reference_WID[255] = {0};
  SQLLEN cbId = 0;
  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 Workday Source", SQL_NTS, 0, 0, 0, 0) == SQL_SUCCESS) {
        if (SQLAllocHandle(SQL_HANDLE_STMT, hdbc ,&hstmt) == SQL_SUCCESS) {
          if (SQLExecDirect(hstmt, "SELECT Worker_Reference_WID FROM [CData].[Human_Resources].Workers WHERE Legal_Name_Last_Name = 'Morgan'", SQL_NTS) == SQL_SUCCESS) {
            while(SQLFetch(hstmt) == SQL_SUCCESS) {
              if (SQLGetData(hstmt, 1, SQL_C_CHAR, (SQLPOINTER)sWorker_Reference_WID, 255, &cbId) == SQL_SUCCESS) {
                printf("Worker_Reference_WID: %s\n", sWorker_Reference_WID);
              }
            }
          }
          SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
        }
        SQLDisconnect(hdbc);
      }
      SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
    }
    SQLFreeHandle(SQL_HANDLE_ENV, henv);
  }

Copyright (c) 2023 CData Software, Inc. - All rights reserved.
Build 22.0.8479