@@ -375,6 +375,14 @@ void ODBCStatement::GetStmtAttr(SQLINTEGER statement_attribute, SQLPOINTER outpu
375375 return ;
376376 case SQL_ATTR_PARAM_BIND_TYPE:
377377 current_apd_->GetHeaderField (SQL_DESC_BIND_TYPE, output, buffer_size, str_len_ptr);
378+ if (output) {
379+ // Convert SQLINTEGER output to SQLULEN, since SQL_DESC_BIND_TYPE is SQLINTEGER
380+ // and SQL_ATTR_PARAM_BIND_TYPE is SQLULEN
381+ SQLINTEGER* output_int_ptr = reinterpret_cast <SQLINTEGER*>(output);
382+ SQLINTEGER output_int = *output_int_ptr;
383+ SQLULEN* typed_output = reinterpret_cast <SQLULEN*>(output);
384+ *typed_output = static_cast <SQLULEN>(output_int);
385+ }
378386 return ;
379387 case SQL_ATTR_PARAM_OPERATION_PTR:
380388 current_apd_->GetHeaderField (SQL_DESC_ARRAY_STATUS_PTR, output, buffer_size,
@@ -398,6 +406,14 @@ void ODBCStatement::GetStmtAttr(SQLINTEGER statement_attribute, SQLPOINTER outpu
398406 return ;
399407 case SQL_ATTR_ROW_BIND_TYPE:
400408 current_ard_->GetHeaderField (SQL_DESC_BIND_TYPE, output, buffer_size, str_len_ptr);
409+ if (output) {
410+ // Convert SQLINTEGER output to SQLULEN, since SQL_DESC_BIND_TYPE is SQLINTEGER
411+ // and SQL_ATTR_ROW_BIND_TYPE is SQLULEN
412+ SQLINTEGER* output_int_ptr = reinterpret_cast <SQLINTEGER*>(output);
413+ SQLINTEGER output_int = *output_int_ptr;
414+ SQLULEN* typed_output = reinterpret_cast <SQLULEN*>(output);
415+ *typed_output = static_cast <SQLULEN>(output_int);
416+ }
401417 return ;
402418 case SQL_ATTR_ROW_OPERATION_PTR:
403419 current_ard_->GetHeaderField (SQL_DESC_ARRAY_STATUS_PTR, output, buffer_size,
0 commit comments