Исключение при получении данных BLOB-объектов из функции в запросе - PullRequest
0 голосов
/ 23 марта 2020

У меня есть функция, которая должна возвращать BLOB-объекты.

Однако, когда вызывается OCIDefineByPos (), я получаю

Unhandeld exception

Это код функции:

void get_blob_data()
{
    // output variables
    static OCILobLocator *blob = NULL;

    // The query, returning a blob
    CString csQuery;
    csQuery.Format("select get_checkout_blob('20','200') from dual");

    // init
    // m_OCIEnvironment, m_OCIStatement, m_OCIError are alloced
    OCIHandleAlloc((dvoid *)m_OCIEnvironment , (dvoid **)(&m_OCIStatement),
        (ub4)OCI_HTYPE_STMT, (size_t)0, (dvoid **)0);

    //Prepare statement voor query
    OCIStmtPrepare(m_OCIStatement, m_OCIError, (text *)(csQuery),
        (ub4)(strlen(csQuery)), (ub4)OCI_NTV_SYNTAX, (ub4)OCI_DEFAULT);

    m_pIndicator1 = malloc(sizeof(OCIInd));
    m_pDefine1 = NULL;

    OCIDescriptorAlloc(m_OCIEnvironment, &blob, (ub4)OCI_DTYPE_LOB, (size_t)0, (dvoid **)0);

    OCIDefineByPos(m_OCIStatement, &m_pDefine1, m_OCIError, (ub4)1, (dvoid*)blob, (sb4)-1, 
        OCI_DTYPE_LOB, (dvoid*)m_pIndicator1, (ub2*)0, (ub2*)0, (ub4)OCI_DEFAULT));

    iStatus = OCIStmtExecute(m_OCISrvCtx, m_OCIStatement, m_OCIError, (ub4)1, (ub4)0, 
        (OCISnapshot *)NULL, (OCISnapshot *)NULL, (ub4)OCI_DEFAULT);

}
...