The third time I try to call this, I get the following error
Project BBSConvertTransfer.exe raised exception class EAssertionFailed with message 'Assertion failure [D:\Projects\delphi\Dac\Source\MemData.pas. line 6307'. .....
The ODAC setup for the BLOB is bolded below. The BLOBs are binar files containing fingerprint images and are about 600K each in size.
try
{
OraStoredProc->Close();
OraStoredProc->Params->ParamValues["V_ALIAS_NAME_1"] = TMainForm::GetValueForCode(AnsiString("T2_AKA"), 0);
OraStoredProc->Params->ParamValues["V_ALIAS_NAME_2"] = TMainForm::GetValueForCode(AnsiString("T2_AKA"), 1);
OraStoredProc->Params->ParamValues["V_ALIAS_NAME_3"] = TMainForm::GetValueForCode(AnsiString("T2_AKA"), 2);
OraStoredProc->Params->ParamValues["V_ALIAS_NAME_4"] = TMainForm::GetValueForCode(AnsiString("T2_AKA"), 3);
OraStoredProc->Params->ParamValues["V_ALIAS_NAME_5"] = TMainForm::GetValueForCode(AnsiString("T2_AKA"), 4);
OraStoredProc->Params->ParamValues["V_ALIEN_NBR"] = TMainForm::GetValueForCode(AnsiString("T1_TCN"), 0).SubString(2,9);
OraStoredProc->Params->ParamValues["V_ASC_MACHINE_ID"] = TMainForm::GetValueForCode(AnsiString("2.905"), 0);
OraStoredProc->Params->ParamValues["V_ASC_QC_ID"] = TMainForm::GetValueForCode(AnsiString("2.919"), 0);
//OraStoredProc->Params->ParamValues["V_ASC_SITE_ID"] = TMainForm::GetValueForCode(AnsiString("2.916"), 0);
OraStoredProc->Params->ParamValues["V_ASC_USER_ID"] = TMainForm::GetValueForCode(AnsiString("2.906"), 0);
OraStoredProc->Params->ParamValues["V_CITY"] = TMainForm::GetValueForCode(AnsiString("2.911"), 0);
OraStoredProc->Params->ParamValues["V_CITZ_CODE"] = TMainForm::GetValueForCode(AnsiString("T2_CTZ"), 0);
OraStoredProc->Params->ParamValues["V_DOB_DT_1"] = TMainForm::GetValueForCode(AnsiString("T2_DOB"), 0);
OraStoredProc->Params->ParamValues["V_EFIPS_DAI"] = TMainForm::GetValueForCode(AnsiString("T1_DAI"), 0);
OraStoredProc->Params->ParamValues["V_EFIPS_TCN"] = TMainForm::GetValueForCode(AnsiString("T1_TCN"), 0);
OraStoredProc->Params->ParamValues["V_EFIPS_TCR"] = TMainForm::GetValueForCode(AnsiString("T1_TCR"), 0);
OraStoredProc->Params->ParamValues["V_EFIPS_TSN"] = TMainForm::GetValueForCode(AnsiString("2.904"), 0);
OraStoredProc->Params->ParamValues["V_EXT_SYS"] = TMainForm::GetValueForCode(AnsiString("2.902"), 0);
OraStoredProc->Params->ParamValues["V_EXT_SYS_ID"] = TMainForm::GetValueForCode(AnsiString("2.903"), 0);
OraStoredProc->Params->ParamValues["V_EYE_COLOR_CODE"] = TMainForm::GetValueForCode(AnsiString("T2_EYE"), 0);
OraStoredProc->Params->ParamValues["V_FBI_NAME"] = TMainForm::GetValueForCode(AnsiString("T2_NAM"), 0);
OraStoredProc->Params->ParamValues["V_FBI_NBR"] = TMainForm::GetValueForCode(AnsiString("T2_FBI"), 0);
OraStoredProc->Params->ParamValues["V_FBI_TCN"] = TMainForm::GetValueForCode(AnsiString("T1_TCN"), 0);
AnsiString as103 = TMainForm::GetValueForCode(AnsiString("1.03"), 0);
for (int i=10 ; i Params->ParamValues["V_FINGERPRINT" + IntToStr(i) + "_STATUS"] = "Y";
else
OraStoredProc->Params->ParamValues["V_FINGERPRINT" + IntToStr(i) + "_STATUS"] = "N";
}
for (int i=1 ; i Params->ParamValues["V_FINGERPRINT" + IntToStr(i) + "_STATUS"] = "Y";
else
OraStoredProc->Params->ParamValues["V_FINGERPRINT" + IntToStr(i) + "_STATUS"] = "N";
}
OraStoredProc->Params->ParamValues["V_FIRST_NAME"] = TMainForm::GetValueForCode(AnsiString("2.908"), 0);
AnsiString asFPSentDateProc = TMainForm::GetValueForCode(AnsiString("T1_TCN"), 0).SubString(11,8);
OraStoredProc->Params->ParamValues["V_FP_SENT_DT"] = asFPSentDateProc.SubString(5,2) + "/" +
asFPSentDateProc.SubString(7,2) + "/" +
asFPSentDateProc.SubString(1,4);
OraStoredProc->Params->ParamValues["V_FP_TAKEN_DT"] = TMainForm::GetValueForCode(AnsiString("T2_DPR"), 0);
OraStoredProc->Params->ParamValues["V_GENDER_CODE"] = TMainForm::GetValueForCode(AnsiString("T2_SEX"), 0);
OraStoredProc->Params->ParamValues["V_HAIR_COLOR_CODE"] = TMainForm::GetValueForCode(AnsiString("T2_HAI"), 0);
OraStoredProc->Params->ParamValues["V_HEIGHT"] = TMainForm::GetValueForCode(AnsiString("T2_HGT"), 0);
OraStoredProc->Params->ParamValues["V_LAST_NAME"] = TMainForm::GetValueForCode(AnsiString("2.907"), 0);
OraStoredProc->Params->ParamValues["V_LOCAL_ORI_NBR"] = TMainForm::GetValueForCode(AnsiString("T1_ORI"), 0);
OraStoredProc->Params->ParamValues["V_MIDDLE_NAME"] = TMainForm::GetValueForCode(AnsiString("2.909"), 0);
OraStoredProc->Params->ParamValues["V_MIL_NBR"] = TMainForm::GetValueForCode(AnsiString(""), 0);
OraStoredProc->Params->ParamValues["V_MNU_NBR"] = TMainForm::GetValueForCode(AnsiString("T2_MNU"), 1);
OraStoredProc->Params->ParamValues["V_OCA_NBR"] = TMainForm::GetValueForCode(AnsiString("T2_OCA"), 0);
OraStoredProc->Params->ParamValues["V_POB_CODE"] = TMainForm::GetValueForCode(AnsiString("T2_POB"), 0);
OraStoredProc->Params->ParamValues["V_RACE_CODE"] = TMainForm::GetValueForCode(AnsiString("T2_RAC"), 0);
OraStoredProc->Params->ParamValues["V_REASON_FP_FORM"] = TMainForm::GetValueForCode(AnsiString("T2_RFP"), 0);
TDateTime copyTimeProc = globalDateTime->CurrentDateTime();
AnsiString asUniqueDateProc = copyTimeProc.FormatString("mm/dd/yyyy");
OraStoredProc->Params->ParamValues["V_RECEIVED_DATE"] = asUniqueDateProc;
OraStoredProc->Params->ParamValues["V_RECV_DT"] = TMainForm::GetValueForCode(AnsiString(""), 0);
OraStoredProc->Params->ParamValues["V_REGIONAL_ORI_NBR"] = TMainForm::GetValueForCode(AnsiString("T1_DAI"), 0);
OraStoredProc->Params->ParamValues["V_REJECT_DATA"] = TMainForm::GetValueForCode(AnsiString("T2_MSG"), 0);
OraStoredProc->Params->ParamValues["V_RESPONSE_TIME"] = 0.0; //TMainForm::GetValueForCode(AnsiString(""), 0);
OraStoredProc->Params->ParamValues["V_SCAN_TYPE"] = TMainForm::GetValueForCode(AnsiString("2.904"), 0).SubString(7,1);
OraStoredProc->Params->ParamValues["V_SEARCH_RESULT"] = TMainForm::GetValueForCode(AnsiString(""), 0);
OraStoredProc->Params->ParamValues["V_SENT_TO_FBI_FLAG"] = "Y";
OraStoredProc->Params->ParamValues["V_SSN_1"] = TMainForm::GetValueForCode(AnsiString("T2_SOC"), 0);
OraStoredProc->Params->ParamValues["V_STATE_CODE"] = TMainForm::GetValueForCode(AnsiString("2.912"), 0);
OraStoredProc->Params->ParamValues["V_STREET"] = TMainForm::GetValueForCode(AnsiString("2.910"), 0);
OraStoredProc->Params->ParamValues["V_SUBMIT_COUNT"] = "1";
OraStoredProc->Params->ParamValues["V_WEIGHT"] = StrToInt(TMainForm::GetValueForCode(AnsiString("T2_WGT"), 0));
OraStoredProc->Params->ParamValues["V_ZIP_CODE"] = TMainForm::GetValueForCode(AnsiString("2.913"), 0);
TOraLob *vBLOB = new TOraLob(OraSession->OCISvcCtx);
vBLOB->CreateTemporary(ltBlob);
vBLOB->LoadFromFile(asrFile);
vBLOB->WriteLob();
OraStoredProc->ParamByName("V_EFTS")->AsOraBlob = vBLOB;
OraStoredProc->Prepare();
if (OraStoredProc->Prepared == true)
OraStoredProc->ExecProc();
delete vBLOB; }
catch(...)
{
StatusMemo->Lines->Add("Stored procedure failed!");
}
More BLOB problems
-
- Posts: 5
- Joined: Thu 19 May 2005 19:04
- Location: Fairfax, VA 22031
-
- Posts: 5
- Joined: Thu 19 May 2005 19:04
- Location: Fairfax, VA 22031
More BLOB problems
Latest ODAC version from odac555cb5.exe
TOraLob *vBLOB = new TOraLob(OraSession->OCISvcCtx);
vBLOB->CreateTemporary(ltBlob);
vBLOB->LoadFromFile(asrFile);
vBLOB->WriteLob();
OraStoredProc->ParamByName("V_EFTS")->AsOraBlob = vBLOB;
OraStoredProc->Prepare();
if (OraStoredProc->Prepared == true)
OraStoredProc->ExecProc();
delete vBLOB;
The code above is in a timer. The timer is enabled and it processes a record every time the timer is triggered.
It appears something is not being given back in memory. These BLOBs are about 600K - 700K in size. In a loop, after attempting to load about 3 of them, my program bombs. I have another program that is similar functionally, but puts in smaller BLOBs (5-6K). It lasts a lot longer, but still bombs eventually.
TOraLob *vBLOB = new TOraLob(OraSession->OCISvcCtx);
vBLOB->CreateTemporary(ltBlob);
vBLOB->LoadFromFile(asrFile);
vBLOB->WriteLob();
OraStoredProc->ParamByName("V_EFTS")->AsOraBlob = vBLOB;
OraStoredProc->Prepare();
if (OraStoredProc->Prepared == true)
OraStoredProc->ExecProc();
delete vBLOB;
The code above is in a timer. The timer is enabled and it processes a record every time the timer is triggered.
It appears something is not being given back in memory. These BLOBs are about 600K - 700K in size. In a loop, after attempting to load about 3 of them, my program bombs. I have another program that is similar functionally, but puts in smaller BLOBs (5-6K). It lasts a lot longer, but still bombs eventually.
Sorry for not answering you before. The most possible cause of your problem is "delete vBLOB; " line in your code (it is my fault that I'm include C++ example with this line in one of mine forum topics). Please try to remove this line from your code, the vBLOB variable will be freed internally in OraStoredProc.Params.
If you encounter any other problems please inform us.
If you encounter any other problems please inform us.