getColumnInfo method
Get column information
Implementation
Future<List<ColumnInfo>> getColumnInfo() async {
_ensureExecuted();
final columns = <ColumnInfo>[];
final numColumns = _columnCount ?? 0;
for (var i = 1; i <= numColumns; i++) {
final queryInfo = _memoryManager.allocate<dpiQueryInfo>(sizeOf<dpiQueryInfo>());
final result = _dpiOracle.dpiStmt_getQueryInfo(
_statementPtr.value,
i,
queryInfo,
);
if (result == DPI_FAILURE) {
throw OracleStatementException(
'Failed to get column info for column $i',
sql: _sql,
);
}
final name = StringUtils.fromNativeUtf8(queryInfo.ref.name.cast<Char>());
final typeInfo = queryInfo.ref.typeInfo;
columns.add(ColumnInfo(
name: name,
position: i,
oracleType: typeInfo.oracleTypeNum,
defaultNativeType: typeInfo.defaultNativeTypeNum,
size: typeInfo.dbSizeInBytes,
precision: typeInfo.precision,
scale: typeInfo.scale,
isNullable: typeInfo.sizeInChars == 1,
));
}
return columns;
}