I'd like to put large strings into a CLOB
I'd like to put large strings into a CLOB
I cannot save large character objects out of bcb 5 into a 10g CLOB field. I have a procdeure, which works in C++, but I get an access failure. Does anybody know how it works?
[code]
dbsp_Procedure->Session = CBP_mdl_DBContainer->ses_Application;
dbsp_Procedure->StoredProcName = "cb_insert_text2";
dbsp_Procedure->Params->CreateParam(ftOraClob, "PV_TEXT", ptInput);
dbsp_Procedure->Params->Items[0]->AsOraClob->AllocLob();
dbsp_Procedure->Params->Items[0]->AsOraClob->AsString = edt_Suchparameter->Text;
dbsp_Procedure->Params->Items[0]->AsOraClob->Init();
[/code]
[code]
dbsp_Procedure->Session = CBP_mdl_DBContainer->ses_Application;
dbsp_Procedure->StoredProcName = "cb_insert_text2";
dbsp_Procedure->Params->CreateParam(ftOraClob, "PV_TEXT", ptInput);
dbsp_Procedure->Params->Items[0]->AsOraClob->AllocLob();
dbsp_Procedure->Params->Items[0]->AsOraClob->AsString = edt_Suchparameter->Text;
dbsp_Procedure->Params->Items[0]->AsOraClob->Init();
[/code]
You can pass input parameter to stored procedure using the next code
Include OraClasses.hpp to your include section also.
Code: Select all
{
TOraLob *TempCLOB;
TempCLOB = new TOraLob(OraSession->OCISvcCtx);
TempCLOB->CreateTemporary(ltClob);
TempCLOB->AsString = "CLOB data";
TempCLOB->WriteLob();
dbsp_Procedure->ParamByName("Value")->ParamType = ptInput;
dbsp_Procedure->ParamByName("Value")->AsOraClob = TempCLOB;
dbsp_Procedure->Execute();
delete TempCLOB;
}
Net-option cannot work with temporary LOBs. Try to use the next code to
solve your problem.
1) Change the body of your StoredProc to the next:
2) Write the next code in your application:
solve your problem.
1) Change the body of your StoredProc to the next:
Code: Select all
PROCEDURE INSERT_CLOB(PV_ID varchar2,PV_TEXT out clob) AS
BEGIN
INSERT INTO CMP_TEST (ID, TEXT) VALUES (PV_ID, EMPTY_CLOB())
RETURNING TEXT
INTO PV_TEXT;
END;
Code: Select all
OraStoredProc1->Params->Clear();
OraStoredProc1->StoredProcName = "insert_clob";
OraStoredProc1->Prepare();
OraStoredProc1->Params->Items[0]->AsString = "CLOB Title";
OraStoredProc1->Params->Items[1]->ParamType = ptInput;
OraStoredProc1->Params->Items[1]->AsOraClob->AsString = Edit1->Text;
OraStoredProc1->ExecProc();
Code: Select all
OraStoredProc1.Params.Clear;
OraStoredProc1.StoredProcName := 'insert_clob';
OraStoredProc1.Prepare;
OraStoredProc1.Params[0].AsString := 'CLOB Title';
OraStoredProc1.Params[1].ParamType := ptInput;
OraStoredProc1.Params[1].AsOraClob.AsString := Edit1.Text;
OraStoredProc1.ExecProc;