$func = {
    SQLAllocConnect => {
        type => 'SQLRETURN',
        name => 'SQLAllocConnect',
        param => [
            {
                type => 'SQLHENV',
                ptr => 0,
                name => 'EnvironmentHandle',
                index => 0,
            },
            {
                type => 'SQLHDBC',
                ptr => 1,
                name => 'ConnectionHandle',
                index => 1,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLAllocEnv => {
        type => 'SQLRETURN',
        name => 'SQLAllocEnv',
        param => [
            {
                type => 'SQLHENV',
                ptr => 1,
                name => 'EnvironmentHandle',
                index => 0,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLAllocHandle => {
        type => 'SQLRETURN',
        name => 'SQLAllocHandle',
        param => [
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'HandleType',
                index => 0,
            },
            {
                type => 'SQLHANDLE',
                ptr => 0,
                name => 'InputHandle',
                index => 1,
            },
            {
                type => 'SQLHANDLE',
                ptr => 1,
                name => 'OutputHandle',
                index => 2,
            },
        ],
        odbcver => 'ODBCVER >= 0x0300',
    },
    SQLAllocHandleStd => {
        type => 'SQLRETURN',
        name => 'SQLAllocHandleStd',
        param => [
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'fHandleType',
                index => 0,
            },
            {
                type => 'SQLHANDLE',
                ptr => 0,
                name => 'hInput',
                index => 1,
            },
            {
                type => 'SQLHANDLE',
                ptr => 1,
                name => 'phOutput',
                index => 2,
            },
        ],
        odbcver => 'ODBCVER >= 0x0300',
    },
    SQLAllocStmt => {
        type => 'SQLRETURN',
        name => 'SQLAllocStmt',
        param => [
            {
                type => 'SQLHDBC',
                ptr => 0,
                name => 'ConnectionHandle',
                index => 0,
            },
            {
                type => 'SQLHSTMT',
                ptr => 1,
                name => 'StatementHandle',
                index => 1,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLBindCol => {
        type => 'SQLRETURN',
        name => 'SQLBindCol',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'StatementHandle',
                index => 0,
            },
            {
                type => 'SQLUSMALLINT',
                ptr => 0,
                name => 'ColumnNumber',
                index => 1,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'TargetType',
                index => 2,
            },
            {
                type => 'SQLPOINTER',
                ptr => 0,
                name => 'TargetValue',
                index => 3,
            },
            {
                type => 'SQLINTEGER',
                ptr => 0,
                name => 'BufferLength',
                index => 4,
            },
            {
                type => 'SQLINTEGER',
                ptr => 1,
                name => 'StrLen_or_Ind',
                index => 5,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLBindParam => {
        type => 'SQLRETURN',
        name => 'SQLBindParam',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'StatementHandle',
                index => 0,
            },
            {
                type => 'SQLUSMALLINT',
                ptr => 0,
                name => 'ParameterNumber',
                index => 1,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'ValueType',
                index => 2,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'ParameterType',
                index => 3,
            },
            {
                type => 'SQLUINTEGER',
                ptr => 0,
                name => 'LengthPrecision',
                index => 4,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'ParameterScale',
                index => 5,
            },
            {
                type => 'SQLPOINTER',
                ptr => 0,
                name => 'ParameterValue',
                index => 6,
            },
            {
                type => 'SQLINTEGER',
                ptr => 1,
                name => 'StrLen_or_Ind',
                index => 7,
            },
        ],
        odbcver => 'ODBCVER >= 0x0300',
    },
    SQLBindParameter => {
        type => 'SQLRETURN',
        name => 'SQLBindParameter',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'hstmt',
                index => 0,
            },
            {
                type => 'SQLUSMALLINT',
                ptr => 0,
                name => 'ipar',
                index => 1,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'fParamType',
                index => 2,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'fCType',
                index => 3,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'fSqlType',
                index => 4,
            },
            {
                type => 'SQLUINTEGER',
                ptr => 0,
                name => 'cbColDef',
                index => 5,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'ibScale',
                index => 6,
            },
            {
                type => 'SQLPOINTER',
                ptr => 0,
                name => 'rgbValue',
                index => 7,
            },
            {
                type => 'SQLINTEGER',
                ptr => 0,
                name => 'cbValueMax',
                index => 8,
            },
            {
                type => 'SQLINTEGER',
                ptr => 1,
                name => 'pcbValue',
                index => 9,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLBrowseConnect => {
        type => 'SQLRETURN',
        name => 'SQLBrowseConnect',
        param => [
            {
                type => 'SQLHDBC',
                ptr => 0,
                name => 'hdbc',
                index => 0,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'szConnStrIn',
                index => 1,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'cbConnStrIn',
                index => 2,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'szConnStrOut',
                index => 3,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'cbConnStrOutMax',
                index => 4,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 1,
                name => 'pcbConnStrOut',
                index => 5,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLBulkOperations => {
        type => 'SQLRETURN',
        name => 'SQLBulkOperations',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'StatementHandle',
                index => 0,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'Operation',
                index => 1,
            },
        ],
        odbcver => 'ODBCVER >= 0x0300',
    },
    SQLCancel => {
        type => 'SQLRETURN',
        name => 'SQLCancel',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'StatementHandle',
                index => 0,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLCloseCursor => {
        type => 'SQLRETURN',
        name => 'SQLCloseCursor',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'StatementHandle',
                index => 0,
            },
        ],
        odbcver => 'ODBCVER >= 0x0300',
    },
    SQLColAttribute => {
        type => 'SQLRETURN',
        name => 'SQLColAttribute',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'StatementHandle',
                index => 0,
            },
            {
                type => 'SQLUSMALLINT',
                ptr => 0,
                name => 'ColumnNumber',
                index => 1,
            },
            {
                type => 'SQLUSMALLINT',
                ptr => 0,
                name => 'FieldIdentifier',
                index => 2,
            },
            {
                type => 'SQLPOINTER',
                ptr => 0,
                name => 'CharacterAttribute',
                index => 3,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'BufferLength',
                index => 4,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 1,
                name => 'StringLength',
                index => 5,
            },
            {
                type => 'SQLPOINTER',
                ptr => 0,
                name => 'NumericAttribute',
                index => 6,
            },
        ],
        odbcver => 'ODBCVER >= 0x0300',
    },
    SQLColAttributes => {
        type => 'SQLRETURN',
        name => 'SQLColAttributes',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'hstmt',
                index => 0,
            },
            {
                type => 'SQLUSMALLINT',
                ptr => 0,
                name => 'icol',
                index => 1,
            },
            {
                type => 'SQLUSMALLINT',
                ptr => 0,
                name => 'fDescType',
                index => 2,
            },
            {
                type => 'SQLPOINTER',
                ptr => 0,
                name => 'rgbDesc',
                index => 3,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'cbDescMax',
                index => 4,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 1,
                name => 'pcbDesc',
                index => 5,
            },
            {
                type => 'SQLINTEGER',
                ptr => 1,
                name => 'pfDesc',
                index => 6,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLColumnPrivileges => {
        type => 'SQLRETURN',
        name => 'SQLColumnPrivileges',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'hstmt',
                index => 0,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'szCatalogName',
                index => 1,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'cbCatalogName',
                index => 2,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'szSchemaName',
                index => 3,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'cbSchemaName',
                index => 4,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'szTableName',
                index => 5,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'cbTableName',
                index => 6,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'szColumnName',
                index => 7,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'cbColumnName',
                index => 8,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLColumns => {
        type => 'SQLRETURN',
        name => 'SQLColumns',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'StatementHandle',
                index => 0,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'CatalogName',
                index => 1,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'NameLength1',
                index => 2,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'SchemaName',
                index => 3,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'NameLength2',
                index => 4,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'TableName',
                index => 5,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'NameLength3',
                index => 6,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'ColumnName',
                index => 7,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'NameLength4',
                index => 8,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLConnect => {
        type => 'SQLRETURN',
        name => 'SQLConnect',
        param => [
            {
                type => 'SQLHDBC',
                ptr => 0,
                name => 'ConnectionHandle',
                index => 0,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'ServerName',
                index => 1,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'NameLength1',
                index => 2,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'UserName',
                index => 3,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'NameLength2',
                index => 4,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'Authentication',
                index => 5,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'NameLength3',
                index => 6,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLCopyDesc => {
        type => 'SQLRETURN',
        name => 'SQLCopyDesc',
        param => [
            {
                type => 'SQLHDESC',
                ptr => 0,
                name => 'SourceDescHandle',
                index => 0,
            },
            {
                type => 'SQLHDESC',
                ptr => 0,
                name => 'TargetDescHandle',
                index => 1,
            },
        ],
        odbcver => 'ODBCVER >= 0x0300',
    },
    SQLDataSources => {
        type => 'SQLRETURN',
        name => 'SQLDataSources',
        param => [
            {
                type => 'SQLHENV',
                ptr => 0,
                name => 'EnvironmentHandle',
                index => 0,
            },
            {
                type => 'SQLUSMALLINT',
                ptr => 0,
                name => 'Direction',
                index => 1,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'ServerName',
                index => 2,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'BufferLength1',
                index => 3,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 1,
                name => 'NameLength1',
                index => 4,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'Description',
                index => 5,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'BufferLength2',
                index => 6,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 1,
                name => 'NameLength2',
                index => 7,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLDescribeCol => {
        type => 'SQLRETURN',
        name => 'SQLDescribeCol',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'StatementHandle',
                index => 0,
            },
            {
                type => 'SQLUSMALLINT',
                ptr => 0,
                name => 'ColumnNumber',
                index => 1,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'ColumnName',
                index => 2,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'BufferLength',
                index => 3,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 1,
                name => 'NameLength',
                index => 4,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 1,
                name => 'DataType',
                index => 5,
            },
            {
                type => 'SQLUINTEGER',
                ptr => 1,
                name => 'ColumnSize',
                index => 6,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 1,
                name => 'DecimalDigits',
                index => 7,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 1,
                name => 'Nullable',
                index => 8,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLDescribeParam => {
        type => 'SQLRETURN',
        name => 'SQLDescribeParam',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'hstmt',
                index => 0,
            },
            {
                type => 'SQLUSMALLINT',
                ptr => 0,
                name => 'ipar',
                index => 1,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 1,
                name => 'pfSqlType',
                index => 2,
            },
            {
                type => 'SQLUINTEGER',
                ptr => 1,
                name => 'pcbParamDef',
                index => 3,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 1,
                name => 'pibScale',
                index => 4,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 1,
                name => 'pfNullable',
                index => 5,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLDisconnect => {
        type => 'SQLRETURN',
        name => 'SQLDisconnect',
        param => [
            {
                type => 'SQLHDBC',
                ptr => 0,
                name => 'ConnectionHandle',
                index => 0,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLDriverConnect => {
        type => 'SQLRETURN',
        name => 'SQLDriverConnect',
        param => [
            {
                type => 'SQLHDBC',
                ptr => 0,
                name => 'hdbc',
                index => 0,
            },
            {
                type => 'SQLHWND',
                ptr => 0,
                name => 'hwnd',
                index => 1,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'szConnStrIn',
                index => 2,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'cbConnStrIn',
                index => 3,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'szConnStrOut',
                index => 4,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'cbConnStrOutMax',
                index => 5,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 1,
                name => 'pcbConnStrOut',
                index => 6,
            },
            {
                type => 'SQLUSMALLINT',
                ptr => 0,
                name => 'fDriverCompletion',
                index => 7,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLDrivers => {
        type => 'SQLRETURN',
        name => 'SQLDrivers',
        param => [
            {
                type => 'SQLHENV',
                ptr => 0,
                name => 'henv',
                index => 0,
            },
            {
                type => 'SQLUSMALLINT',
                ptr => 0,
                name => 'fDirection',
                index => 1,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'szDriverDesc',
                index => 2,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'cbDriverDescMax',
                index => 3,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 1,
                name => 'pcbDriverDesc',
                index => 4,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'szDriverAttributes',
                index => 5,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'cbDrvrAttrMax',
                index => 6,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 1,
                name => 'pcbDrvrAttr',
                index => 7,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLEndTran => {
        type => 'SQLRETURN',
        name => 'SQLEndTran',
        param => [
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'HandleType',
                index => 0,
            },
            {
                type => 'SQLHANDLE',
                ptr => 0,
                name => 'Handle',
                index => 1,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'CompletionType',
                index => 2,
            },
        ],
        odbcver => 'ODBCVER >= 0x0300',
    },
    SQLError => {
        type => 'SQLRETURN',
        name => 'SQLError',
        param => [
            {
                type => 'SQLHENV',
                ptr => 0,
                name => 'EnvironmentHandle',
                index => 0,
            },
            {
                type => 'SQLHDBC',
                ptr => 0,
                name => 'ConnectionHandle',
                index => 1,
            },
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'StatementHandle',
                index => 2,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'Sqlstate',
                index => 3,
            },
            {
                type => 'SQLINTEGER',
                ptr => 1,
                name => 'NativeError',
                index => 4,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'MessageText',
                index => 5,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'BufferLength',
                index => 6,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 1,
                name => 'TextLength',
                index => 7,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLExecDirect => {
        type => 'SQLRETURN',
        name => 'SQLExecDirect',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'StatementHandle',
                index => 0,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'StatementText',
                index => 1,
            },
            {
                type => 'SQLINTEGER',
                ptr => 0,
                name => 'TextLength',
                index => 2,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLExecute => {
        type => 'SQLRETURN',
        name => 'SQLExecute',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'StatementHandle',
                index => 0,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLExtendedFetch => {
        type => 'SQLRETURN',
        name => 'SQLExtendedFetch',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'hstmt',
                index => 0,
            },
            {
                type => 'SQLUSMALLINT',
                ptr => 0,
                name => 'fFetchType',
                index => 1,
            },
            {
                type => 'SQLINTEGER',
                ptr => 0,
                name => 'irow',
                index => 2,
            },
            {
                type => 'SQLUINTEGER',
                ptr => 1,
                name => 'pcrow',
                index => 3,
            },
            {
                type => 'SQLUSMALLINT',
                ptr => 1,
                name => 'rgfRowStatus',
                index => 4,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLFetch => {
        type => 'SQLRETURN',
        name => 'SQLFetch',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'StatementHandle',
                index => 0,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLFetchScroll => {
        type => 'SQLRETURN',
        name => 'SQLFetchScroll',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'StatementHandle',
                index => 0,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'FetchOrientation',
                index => 1,
            },
            {
                type => 'SQLINTEGER',
                ptr => 0,
                name => 'FetchOffset',
                index => 2,
            },
        ],
        odbcver => 'ODBCVER >= 0x0300',
    },
    SQLForeignKeys => {
        type => 'SQLRETURN',
        name => 'SQLForeignKeys',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'hstmt',
                index => 0,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'szPkCatalogName',
                index => 1,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'cbPkCatalogName',
                index => 2,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'szPkSchemaName',
                index => 3,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'cbPkSchemaName',
                index => 4,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'szPkTableName',
                index => 5,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'cbPkTableName',
                index => 6,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'szFkCatalogName',
                index => 7,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'cbFkCatalogName',
                index => 8,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'szFkSchemaName',
                index => 9,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'cbFkSchemaName',
                index => 10,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'szFkTableName',
                index => 11,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'cbFkTableName',
                index => 12,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLFreeConnect => {
        type => 'SQLRETURN',
        name => 'SQLFreeConnect',
        param => [
            {
                type => 'SQLHDBC',
                ptr => 0,
                name => 'ConnectionHandle',
                index => 0,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLFreeEnv => {
        type => 'SQLRETURN',
        name => 'SQLFreeEnv',
        param => [
            {
                type => 'SQLHENV',
                ptr => 0,
                name => 'EnvironmentHandle',
                index => 0,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLFreeHandle => {
        type => 'SQLRETURN',
        name => 'SQLFreeHandle',
        param => [
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'HandleType',
                index => 0,
            },
            {
                type => 'SQLHANDLE',
                ptr => 0,
                name => 'Handle',
                index => 1,
            },
        ],
        odbcver => 'ODBCVER >= 0x0300',
    },
    SQLFreeStmt => {
        type => 'SQLRETURN',
        name => 'SQLFreeStmt',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'StatementHandle',
                index => 0,
            },
            {
                type => 'SQLUSMALLINT',
                ptr => 0,
                name => 'Option',
                index => 1,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLGetConnectAttr => {
        type => 'SQLRETURN',
        name => 'SQLGetConnectAttr',
        param => [
            {
                type => 'SQLHDBC',
                ptr => 0,
                name => 'ConnectionHandle',
                index => 0,
            },
            {
                type => 'SQLINTEGER',
                ptr => 0,
                name => 'Attribute',
                index => 1,
            },
            {
                type => 'SQLPOINTER',
                ptr => 0,
                name => 'Value',
                index => 2,
            },
            {
                type => 'SQLINTEGER',
                ptr => 0,
                name => 'BufferLength',
                index => 3,
            },
            {
                type => 'SQLINTEGER',
                ptr => 1,
                name => 'StringLength',
                index => 4,
            },
        ],
        odbcver => 'ODBCVER >= 0x0300',
    },
    SQLGetConnectOption => {
        type => 'SQLRETURN',
        name => 'SQLGetConnectOption',
        param => [
            {
                type => 'SQLHDBC',
                ptr => 0,
                name => 'ConnectionHandle',
                index => 0,
            },
            {
                type => 'SQLUSMALLINT',
                ptr => 0,
                name => 'Option',
                index => 1,
            },
            {
                type => 'SQLPOINTER',
                ptr => 0,
                name => 'Value',
                index => 2,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLGetCursorName => {
        type => 'SQLRETURN',
        name => 'SQLGetCursorName',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'StatementHandle',
                index => 0,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'CursorName',
                index => 1,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'BufferLength',
                index => 2,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 1,
                name => 'NameLength',
                index => 3,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLGetData => {
        type => 'SQLRETURN',
        name => 'SQLGetData',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'StatementHandle',
                index => 0,
            },
            {
                type => 'SQLUSMALLINT',
                ptr => 0,
                name => 'ColumnNumber',
                index => 1,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'TargetType',
                index => 2,
            },
            {
                type => 'SQLPOINTER',
                ptr => 0,
                name => 'TargetValue',
                index => 3,
            },
            {
                type => 'SQLINTEGER',
                ptr => 0,
                name => 'BufferLength',
                index => 4,
            },
            {
                type => 'SQLINTEGER',
                ptr => 1,
                name => 'StrLen_or_Ind',
                index => 5,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLGetDescField => {
        type => 'SQLRETURN',
        name => 'SQLGetDescField',
        param => [
            {
                type => 'SQLHDESC',
                ptr => 0,
                name => 'DescriptorHandle',
                index => 0,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'RecNumber',
                index => 1,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'FieldIdentifier',
                index => 2,
            },
            {
                type => 'SQLPOINTER',
                ptr => 0,
                name => 'Value',
                index => 3,
            },
            {
                type => 'SQLINTEGER',
                ptr => 0,
                name => 'BufferLength',
                index => 4,
            },
            {
                type => 'SQLINTEGER',
                ptr => 1,
                name => 'StringLength',
                index => 5,
            },
        ],
        odbcver => 'ODBCVER >= 0x0300',
    },
    SQLGetDescRec => {
        type => 'SQLRETURN',
        name => 'SQLGetDescRec',
        param => [
            {
                type => 'SQLHDESC',
                ptr => 0,
                name => 'DescriptorHandle',
                index => 0,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'RecNumber',
                index => 1,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'Name',
                index => 2,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'BufferLength',
                index => 3,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 1,
                name => 'StringLength',
                index => 4,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 1,
                name => 'Type',
                index => 5,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 1,
                name => 'SubType',
                index => 6,
            },
            {
                type => 'SQLINTEGER',
                ptr => 1,
                name => 'Length',
                index => 7,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 1,
                name => 'Precision',
                index => 8,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 1,
                name => 'Scale',
                index => 9,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 1,
                name => 'Nullable',
                index => 10,
            },
        ],
        odbcver => 'ODBCVER >= 0x0300',
    },
    SQLGetDiagField => {
        type => 'SQLRETURN',
        name => 'SQLGetDiagField',
        param => [
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'HandleType',
                index => 0,
            },
            {
                type => 'SQLHANDLE',
                ptr => 0,
                name => 'Handle',
                index => 1,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'RecNumber',
                index => 2,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'DiagIdentifier',
                index => 3,
            },
            {
                type => 'SQLPOINTER',
                ptr => 0,
                name => 'DiagInfo',
                index => 4,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'BufferLength',
                index => 5,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 1,
                name => 'StringLength',
                index => 6,
            },
        ],
        odbcver => 'ODBCVER >= 0x0300',
    },
    SQLGetDiagRec => {
        type => 'SQLRETURN',
        name => 'SQLGetDiagRec',
        param => [
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'HandleType',
                index => 0,
            },
            {
                type => 'SQLHANDLE',
                ptr => 0,
                name => 'Handle',
                index => 1,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'RecNumber',
                index => 2,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'Sqlstate',
                index => 3,
            },
            {
                type => 'SQLINTEGER',
                ptr => 1,
                name => 'NativeError',
                index => 4,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'MessageText',
                index => 5,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'BufferLength',
                index => 6,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 1,
                name => 'TextLength',
                index => 7,
            },
        ],
        odbcver => 'ODBCVER >= 0x0300',
    },
    SQLGetEnvAttr => {
        type => 'SQLRETURN',
        name => 'SQLGetEnvAttr',
        param => [
            {
                type => 'SQLHENV',
                ptr => 0,
                name => 'EnvironmentHandle',
                index => 0,
            },
            {
                type => 'SQLINTEGER',
                ptr => 0,
                name => 'Attribute',
                index => 1,
            },
            {
                type => 'SQLPOINTER',
                ptr => 0,
                name => 'Value',
                index => 2,
            },
            {
                type => 'SQLINTEGER',
                ptr => 0,
                name => 'BufferLength',
                index => 3,
            },
            {
                type => 'SQLINTEGER',
                ptr => 1,
                name => 'StringLength',
                index => 4,
            },
        ],
        odbcver => 'ODBCVER >= 0x0300',
    },
    SQLGetFunctions => {
        type => 'SQLRETURN',
        name => 'SQLGetFunctions',
        param => [
            {
                type => 'SQLHDBC',
                ptr => 0,
                name => 'ConnectionHandle',
                index => 0,
            },
            {
                type => 'SQLUSMALLINT',
                ptr => 0,
                name => 'FunctionId',
                index => 1,
            },
            {
                type => 'SQLUSMALLINT',
                ptr => 1,
                name => 'Supported',
                index => 2,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLGetInfo => {
        type => 'SQLRETURN',
        name => 'SQLGetInfo',
        param => [
            {
                type => 'SQLHDBC',
                ptr => 0,
                name => 'ConnectionHandle',
                index => 0,
            },
            {
                type => 'SQLUSMALLINT',
                ptr => 0,
                name => 'InfoType',
                index => 1,
            },
            {
                type => 'SQLPOINTER',
                ptr => 0,
                name => 'InfoValue',
                index => 2,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'BufferLength',
                index => 3,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 1,
                name => 'StringLength',
                index => 4,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLGetStmtAttr => {
        type => 'SQLRETURN',
        name => 'SQLGetStmtAttr',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'StatementHandle',
                index => 0,
            },
            {
                type => 'SQLINTEGER',
                ptr => 0,
                name => 'Attribute',
                index => 1,
            },
            {
                type => 'SQLPOINTER',
                ptr => 0,
                name => 'Value',
                index => 2,
            },
            {
                type => 'SQLINTEGER',
                ptr => 0,
                name => 'BufferLength',
                index => 3,
            },
            {
                type => 'SQLINTEGER',
                ptr => 1,
                name => 'StringLength',
                index => 4,
            },
        ],
        odbcver => 'ODBCVER >= 0x0300',
    },
    SQLGetStmtOption => {
        type => 'SQLRETURN',
        name => 'SQLGetStmtOption',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'StatementHandle',
                index => 0,
            },
            {
                type => 'SQLUSMALLINT',
                ptr => 0,
                name => 'Option',
                index => 1,
            },
            {
                type => 'SQLPOINTER',
                ptr => 0,
                name => 'Value',
                index => 2,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLGetTypeInfo => {
        type => 'SQLRETURN',
        name => 'SQLGetTypeInfo',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'StatementHandle',
                index => 0,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'DataType',
                index => 1,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLMoreResults => {
        type => 'SQLRETURN',
        name => 'SQLMoreResults',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'hstmt',
                index => 0,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLNativeSql => {
        type => 'SQLRETURN',
        name => 'SQLNativeSql',
        param => [
            {
                type => 'SQLHDBC',
                ptr => 0,
                name => 'hdbc',
                index => 0,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'szSqlStrIn',
                index => 1,
            },
            {
                type => 'SQLINTEGER',
                ptr => 0,
                name => 'cbSqlStrIn',
                index => 2,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'szSqlStr',
                index => 3,
            },
            {
                type => 'SQLINTEGER',
                ptr => 0,
                name => 'cbSqlStrMax',
                index => 4,
            },
            {
                type => 'SQLINTEGER',
                ptr => 1,
                name => 'pcbSqlStr',
                index => 5,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLNumParams => {
        type => 'SQLRETURN',
        name => 'SQLNumParams',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'hstmt',
                index => 0,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 1,
                name => 'pcpar',
                index => 1,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLNumResultCols => {
        type => 'SQLRETURN',
        name => 'SQLNumResultCols',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'StatementHandle',
                index => 0,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 1,
                name => 'ColumnCount',
                index => 1,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLParamData => {
        type => 'SQLRETURN',
        name => 'SQLParamData',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'StatementHandle',
                index => 0,
            },
            {
                type => 'SQLPOINTER',
                ptr => 1,
                name => 'Value',
                index => 1,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLParamOptions => {
        type => 'SQLRETURN',
        name => 'SQLParamOptions',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'hstmt',
                index => 0,
            },
            {
                type => 'SQLUINTEGER',
                ptr => 0,
                name => 'crow',
                index => 1,
            },
            {
                type => 'SQLUINTEGER',
                ptr => 1,
                name => 'pirow',
                index => 2,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLPrepare => {
        type => 'SQLRETURN',
        name => 'SQLPrepare',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'StatementHandle',
                index => 0,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'StatementText',
                index => 1,
            },
            {
                type => 'SQLINTEGER',
                ptr => 0,
                name => 'TextLength',
                index => 2,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLPrimaryKeys => {
        type => 'SQLRETURN',
        name => 'SQLPrimaryKeys',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'hstmt',
                index => 0,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'szCatalogName',
                index => 1,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'cbCatalogName',
                index => 2,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'szSchemaName',
                index => 3,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'cbSchemaName',
                index => 4,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'szTableName',
                index => 5,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'cbTableName',
                index => 6,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLProcedureColumns => {
        type => 'SQLRETURN',
        name => 'SQLProcedureColumns',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'hstmt',
                index => 0,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'szCatalogName',
                index => 1,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'cbCatalogName',
                index => 2,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'szSchemaName',
                index => 3,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'cbSchemaName',
                index => 4,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'szProcName',
                index => 5,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'cbProcName',
                index => 6,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'szColumnName',
                index => 7,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'cbColumnName',
                index => 8,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLProcedures => {
        type => 'SQLRETURN',
        name => 'SQLProcedures',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'hstmt',
                index => 0,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'szCatalogName',
                index => 1,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'cbCatalogName',
                index => 2,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'szSchemaName',
                index => 3,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'cbSchemaName',
                index => 4,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'szProcName',
                index => 5,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'cbProcName',
                index => 6,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLPutData => {
        type => 'SQLRETURN',
        name => 'SQLPutData',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'StatementHandle',
                index => 0,
            },
            {
                type => 'SQLPOINTER',
                ptr => 0,
                name => 'Data',
                index => 1,
            },
            {
                type => 'SQLINTEGER',
                ptr => 0,
                name => 'StrLen_or_Ind',
                index => 2,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLRowCount => {
        type => 'SQLRETURN',
        name => 'SQLRowCount',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'StatementHandle',
                index => 0,
            },
            {
                type => 'SQLINTEGER',
                ptr => 1,
                name => 'RowCount',
                index => 1,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLSetConnectAttr => {
        type => 'SQLRETURN',
        name => 'SQLSetConnectAttr',
        param => [
            {
                type => 'SQLHDBC',
                ptr => 0,
                name => 'ConnectionHandle',
                index => 0,
            },
            {
                type => 'SQLINTEGER',
                ptr => 0,
                name => 'Attribute',
                index => 1,
            },
            {
                type => 'SQLPOINTER',
                ptr => 0,
                name => 'Value',
                index => 2,
            },
            {
                type => 'SQLINTEGER',
                ptr => 0,
                name => 'StringLength',
                index => 3,
            },
        ],
        odbcver => 'ODBCVER >= 0x0300',
    },
    SQLSetConnectOption => {
        type => 'SQLRETURN',
        name => 'SQLSetConnectOption',
        param => [
            {
                type => 'SQLHDBC',
                ptr => 0,
                name => 'ConnectionHandle',
                index => 0,
            },
            {
                type => 'SQLUSMALLINT',
                ptr => 0,
                name => 'Option',
                index => 1,
            },
            {
                type => 'SQLUINTEGER',
                ptr => 0,
                name => 'Value',
                index => 2,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLSetCursorName => {
        type => 'SQLRETURN',
        name => 'SQLSetCursorName',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'StatementHandle',
                index => 0,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'CursorName',
                index => 1,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'NameLength',
                index => 2,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLSetDescField => {
        type => 'SQLRETURN',
        name => 'SQLSetDescField',
        param => [
            {
                type => 'SQLHDESC',
                ptr => 0,
                name => 'DescriptorHandle',
                index => 0,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'RecNumber',
                index => 1,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'FieldIdentifier',
                index => 2,
            },
            {
                type => 'SQLPOINTER',
                ptr => 0,
                name => 'Value',
                index => 3,
            },
            {
                type => 'SQLINTEGER',
                ptr => 0,
                name => 'BufferLength',
                index => 4,
            },
        ],
        odbcver => 'ODBCVER >= 0x0300',
    },
    SQLSetDescRec => {
        type => 'SQLRETURN',
        name => 'SQLSetDescRec',
        param => [
            {
                type => 'SQLHDESC',
                ptr => 0,
                name => 'DescriptorHandle',
                index => 0,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'RecNumber',
                index => 1,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'Type',
                index => 2,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'SubType',
                index => 3,
            },
            {
                type => 'SQLINTEGER',
                ptr => 0,
                name => 'Length',
                index => 4,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'Precision',
                index => 5,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'Scale',
                index => 6,
            },
            {
                type => 'SQLPOINTER',
                ptr => 0,
                name => 'Data',
                index => 7,
            },
            {
                type => 'SQLINTEGER',
                ptr => 1,
                name => 'StringLength',
                index => 8,
            },
            {
                type => 'SQLINTEGER',
                ptr => 1,
                name => 'Indicator',
                index => 9,
            },
        ],
        odbcver => 'ODBCVER >= 0x0300',
    },
    SQLSetEnvAttr => {
        type => 'SQLRETURN',
        name => 'SQLSetEnvAttr',
        param => [
            {
                type => 'SQLHENV',
                ptr => 0,
                name => 'EnvironmentHandle',
                index => 0,
            },
            {
                type => 'SQLINTEGER',
                ptr => 0,
                name => 'Attribute',
                index => 1,
            },
            {
                type => 'SQLPOINTER',
                ptr => 0,
                name => 'Value',
                index => 2,
            },
            {
                type => 'SQLINTEGER',
                ptr => 0,
                name => 'StringLength',
                index => 3,
            },
        ],
        odbcver => 'ODBCVER >= 0x0300',
    },
    SQLSetParam => {
        type => 'SQLRETURN',
        name => 'SQLSetParam',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'StatementHandle',
                index => 0,
            },
            {
                type => 'SQLUSMALLINT',
                ptr => 0,
                name => 'ParameterNumber',
                index => 1,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'ValueType',
                index => 2,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'ParameterType',
                index => 3,
            },
            {
                type => 'SQLUINTEGER',
                ptr => 0,
                name => 'LengthPrecision',
                index => 4,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'ParameterScale',
                index => 5,
            },
            {
                type => 'SQLPOINTER',
                ptr => 0,
                name => 'ParameterValue',
                index => 6,
            },
            {
                type => 'SQLINTEGER',
                ptr => 1,
                name => 'StrLen_or_Ind',
                index => 7,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLSetPos => {
        type => 'SQLRETURN',
        name => 'SQLSetPos',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'hstmt',
                index => 0,
            },
            {
                type => 'SQLUSMALLINT',
                ptr => 0,
                name => 'irow',
                index => 1,
            },
            {
                type => 'SQLUSMALLINT',
                ptr => 0,
                name => 'fOption',
                index => 2,
            },
            {
                type => 'SQLUSMALLINT',
                ptr => 0,
                name => 'fLock',
                index => 3,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLSetScrollOptions => {
        type => 'SQLRETURN',
        name => 'SQLSetScrollOptions',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'hstmt',
                index => 0,
            },
            {
                type => 'SQLUSMALLINT',
                ptr => 0,
                name => 'fConcurrency',
                index => 1,
            },
            {
                type => 'SQLINTEGER',
                ptr => 0,
                name => 'crowKeyset',
                index => 2,
            },
            {
                type => 'SQLUSMALLINT',
                ptr => 0,
                name => 'crowRowset',
                index => 3,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLSetStmtAttr => {
        type => 'SQLRETURN',
        name => 'SQLSetStmtAttr',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'StatementHandle',
                index => 0,
            },
            {
                type => 'SQLINTEGER',
                ptr => 0,
                name => 'Attribute',
                index => 1,
            },
            {
                type => 'SQLPOINTER',
                ptr => 0,
                name => 'Value',
                index => 2,
            },
            {
                type => 'SQLINTEGER',
                ptr => 0,
                name => 'StringLength',
                index => 3,
            },
        ],
        odbcver => 'ODBCVER >= 0x0300',
    },
    SQLSetStmtOption => {
        type => 'SQLRETURN',
        name => 'SQLSetStmtOption',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'StatementHandle',
                index => 0,
            },
            {
                type => 'SQLUSMALLINT',
                ptr => 0,
                name => 'Option',
                index => 1,
            },
            {
                type => 'SQLUINTEGER',
                ptr => 0,
                name => 'Value',
                index => 2,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLSpecialColumns => {
        type => 'SQLRETURN',
        name => 'SQLSpecialColumns',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'StatementHandle',
                index => 0,
            },
            {
                type => 'SQLUSMALLINT',
                ptr => 0,
                name => 'IdentifierType',
                index => 1,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'CatalogName',
                index => 2,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'NameLength1',
                index => 3,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'SchemaName',
                index => 4,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'NameLength2',
                index => 5,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'TableName',
                index => 6,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'NameLength3',
                index => 7,
            },
            {
                type => 'SQLUSMALLINT',
                ptr => 0,
                name => 'Scope',
                index => 8,
            },
            {
                type => 'SQLUSMALLINT',
                ptr => 0,
                name => 'Nullable',
                index => 9,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLStatistics => {
        type => 'SQLRETURN',
        name => 'SQLStatistics',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'StatementHandle',
                index => 0,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'CatalogName',
                index => 1,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'NameLength1',
                index => 2,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'SchemaName',
                index => 3,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'NameLength2',
                index => 4,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'TableName',
                index => 5,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'NameLength3',
                index => 6,
            },
            {
                type => 'SQLUSMALLINT',
                ptr => 0,
                name => 'Unique',
                index => 7,
            },
            {
                type => 'SQLUSMALLINT',
                ptr => 0,
                name => 'Reserved',
                index => 8,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLTablePrivileges => {
        type => 'SQLRETURN',
        name => 'SQLTablePrivileges',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'hstmt',
                index => 0,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'szCatalogName',
                index => 1,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'cbCatalogName',
                index => 2,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'szSchemaName',
                index => 3,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'cbSchemaName',
                index => 4,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'szTableName',
                index => 5,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'cbTableName',
                index => 6,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLTables => {
        type => 'SQLRETURN',
        name => 'SQLTables',
        param => [
            {
                type => 'SQLHSTMT',
                ptr => 0,
                name => 'StatementHandle',
                index => 0,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'CatalogName',
                index => 1,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'NameLength1',
                index => 2,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'SchemaName',
                index => 3,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'NameLength2',
                index => 4,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'TableName',
                index => 5,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'NameLength3',
                index => 6,
            },
            {
                type => 'SQLCHAR',
                ptr => 1,
                name => 'TableType',
                index => 7,
            },
            {
                type => 'SQLSMALLINT',
                ptr => 0,
                name => 'NameLength4',
                index => 8,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
    SQLTransact => {
        type => 'SQLRETURN',
        name => 'SQLTransact',
        param => [
            {
                type => 'SQLHENV',
                ptr => 0,
                name => 'EnvironmentHandle',
                index => 0,
            },
            {
                type => 'SQLHDBC',
                ptr => 0,
                name => 'ConnectionHandle',
                index => 1,
            },
            {
                type => 'SQLUSMALLINT',
                ptr => 0,
                name => 'CompletionType',
                index => 2,
            },
        ],
        odbcver => 'ODBCVER >= 0x0000',
    },
};
