У меня есть функция, которая должна возвращать BLOB-объекты.
Однако, когда вызывается OCIDefineByPos (), я получаю
Это код функции:
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);
}