procedure TFrm_Main.UpLoad_Data(_FileName: string);
var
_Temp:string;
_id:string;
_stream,_stream1,_stream2:TMemoryStream;
begin
try
_Temp:=cxListBox1.items[cxListBox1.itemindex];
except
Application.MessageBox('请先选择图片,才能进行浏览!','提示',64);
Exit;
end;
ReadINIFile(cxButtonEdit1.Text,_FileName);
_Temp:= ExtractFilePath(_FileName);
Application.CreateForm(TFrm_LookPic,Frm_LookPic);
_FILE1:=_Temp + _FILE1;
_FILE2:= _Temp + _FILE2;
_FILE3:= _Temp + _FILE3;
_FILE4:= _Temp + _FILE4;
_stream:= TMemoryStream.Create;
_stream1:= TMemoryStream.Create;
_stream2:= TMemoryStream.Create;
_stream.LoadFromFile(_FILE1);
_stream.Position:= 0 ;
_stream1.LoadFromFile(_FILE2);
_stream1.Position:= 0 ;
_stream2.LoadFromFile(_FILE3);
_stream2.Position:= 0 ;
OraStoredProc1.Close;
OraStoredProc1.StoredProcName:= 'pro_mep_1';
OraStoredProc1.Params.CreateParam(ftString,'strHPZL',ptInput).AsString:= ''; //可以为空
OraStoredProc1.Params.CreateParam(ftString,'strHPHM',ptInput).AsString:= HPHM; //可以为空
OraStoredProc1.Params.CreateParam(ftDateTime,'strWFSJ',ptInput).AsDateTime:= Now; //不可以为空
OraStoredProc1.Params.CreateParam(ftString,'strWFXW',ptInput).AsString:= '11'; //不可以为空
OraStoredProc1.Params.CreateParam(ftString,'strWFDD',ptInput).AsString:= '1'; //不可以为空
OraStoredProc1.Params.CreateParam(ftString,'strWFDZ',ptInput).AsString:= ''; //可以为空
OraStoredProc1.Params.CreateParam(ftString,'strCJJG',ptInput).AsString:= '1'; //不可以为空
OraStoredProc1.Params.CreateParam(ftString,'strSJLY',ptInput).AsString:= '1'; //不可以为空
OraStoredProc1.Params.CreateParam(ftString,'strZPLX',ptInput).AsString:= '1'; //不可以为空
OraStoredProc1.Params.CreateParam(ftString,'strSBBH',ptInput).AsString:= '1'; //不可以为空
OraStoredProc1.Params.CreateParam(ftInteger,'strDLGLS',ptInput).AsInteger:= 0; //不可以为空
OraStoredProc1.Params.CreateParam(ftInteger,'strDLMS',ptInput).AsInteger:= 0; //不可以为空
OraStoredProc1.Params.CreateParam(ftString,'strFJBJ',ptInput).AsString:= ''; //可以为空
OraStoredProc1.Params.CreateParam(ftInteger,'strCLSD',ptInput).AsInteger:= StrToInt(WFCS); //可以为空
OraStoredProc1.Params.CreateParam(ftInteger,'strDCXS',ptInput).AsInteger:= StrToInt(WFXS); //可以为空
OraStoredProc1.Params.CreateParam(ftInteger,'strXCXS',ptInput).AsInteger:= 0; //可以为空
OraStoredProc1.Params.CreateParam(ftInteger,'strDCZFXS',ptInput).AsInteger:= 0; //可以为空
OraStoredProc1.Params.CreateParam(ftInteger,'strXCZFXS',ptInput).AsInteger:= 0; //可以为空
OraStoredProc1.Params.CreateParam(ftInteger,'strZDXS',ptInput).AsInteger:= 0; //可以为空
OraStoredProc1.Params.CreateParam(ftOraBlob,'strPhoto1',ptInput).LoadFromStream(_stream,ftOraBlob);
OraStoredProc1.Params.CreateParam(ftOraBlob,'strPhoto2',ptInput).LoadFromStream(_stream1,ftOraBlob);//不可以为空
OraStoredProc1.Params.CreateParam(ftOraBlob,'strPhoto3',ptInput).LoadFromStream(_stream2,ftOraBlob);//不可以为空
OraStoredProc1.Params.CreateParam(ftString,'out_ZXJG',ptOutput);
OraStoredProc1.ExecProc;
_id:= OraStoredProc1.Params.ParamByName('out_ZXJG').Value;
ShowMessage(_id);
end;
执行时出现指定的LOB定位器无效。谁知道,高分送上。
var
_Temp:string;
_id:string;
_stream,_stream1,_stream2:TMemoryStream;
begin
try
_Temp:=cxListBox1.items[cxListBox1.itemindex];
except
Application.MessageBox('请先选择图片,才能进行浏览!','提示',64);
Exit;
end;
ReadINIFile(cxButtonEdit1.Text,_FileName);
_Temp:= ExtractFilePath(_FileName);
Application.CreateForm(TFrm_LookPic,Frm_LookPic);
_FILE1:=_Temp + _FILE1;
_FILE2:= _Temp + _FILE2;
_FILE3:= _Temp + _FILE3;
_FILE4:= _Temp + _FILE4;
_stream:= TMemoryStream.Create;
_stream1:= TMemoryStream.Create;
_stream2:= TMemoryStream.Create;
_stream.LoadFromFile(_FILE1);
_stream.Position:= 0 ;
_stream1.LoadFromFile(_FILE2);
_stream1.Position:= 0 ;
_stream2.LoadFromFile(_FILE3);
_stream2.Position:= 0 ;
OraStoredProc1.Close;
OraStoredProc1.StoredProcName:= 'pro_mep_1';
OraStoredProc1.Params.CreateParam(ftString,'strHPZL',ptInput).AsString:= ''; //可以为空
OraStoredProc1.Params.CreateParam(ftString,'strHPHM',ptInput).AsString:= HPHM; //可以为空
OraStoredProc1.Params.CreateParam(ftDateTime,'strWFSJ',ptInput).AsDateTime:= Now; //不可以为空
OraStoredProc1.Params.CreateParam(ftString,'strWFXW',ptInput).AsString:= '11'; //不可以为空
OraStoredProc1.Params.CreateParam(ftString,'strWFDD',ptInput).AsString:= '1'; //不可以为空
OraStoredProc1.Params.CreateParam(ftString,'strWFDZ',ptInput).AsString:= ''; //可以为空
OraStoredProc1.Params.CreateParam(ftString,'strCJJG',ptInput).AsString:= '1'; //不可以为空
OraStoredProc1.Params.CreateParam(ftString,'strSJLY',ptInput).AsString:= '1'; //不可以为空
OraStoredProc1.Params.CreateParam(ftString,'strZPLX',ptInput).AsString:= '1'; //不可以为空
OraStoredProc1.Params.CreateParam(ftString,'strSBBH',ptInput).AsString:= '1'; //不可以为空
OraStoredProc1.Params.CreateParam(ftInteger,'strDLGLS',ptInput).AsInteger:= 0; //不可以为空
OraStoredProc1.Params.CreateParam(ftInteger,'strDLMS',ptInput).AsInteger:= 0; //不可以为空
OraStoredProc1.Params.CreateParam(ftString,'strFJBJ',ptInput).AsString:= ''; //可以为空
OraStoredProc1.Params.CreateParam(ftInteger,'strCLSD',ptInput).AsInteger:= StrToInt(WFCS); //可以为空
OraStoredProc1.Params.CreateParam(ftInteger,'strDCXS',ptInput).AsInteger:= StrToInt(WFXS); //可以为空
OraStoredProc1.Params.CreateParam(ftInteger,'strXCXS',ptInput).AsInteger:= 0; //可以为空
OraStoredProc1.Params.CreateParam(ftInteger,'strDCZFXS',ptInput).AsInteger:= 0; //可以为空
OraStoredProc1.Params.CreateParam(ftInteger,'strXCZFXS',ptInput).AsInteger:= 0; //可以为空
OraStoredProc1.Params.CreateParam(ftInteger,'strZDXS',ptInput).AsInteger:= 0; //可以为空
OraStoredProc1.Params.CreateParam(ftOraBlob,'strPhoto1',ptInput).LoadFromStream(_stream,ftOraBlob);
OraStoredProc1.Params.CreateParam(ftOraBlob,'strPhoto2',ptInput).LoadFromStream(_stream1,ftOraBlob);//不可以为空
OraStoredProc1.Params.CreateParam(ftOraBlob,'strPhoto3',ptInput).LoadFromStream(_stream2,ftOraBlob);//不可以为空
OraStoredProc1.Params.CreateParam(ftString,'out_ZXJG',ptOutput);
OraStoredProc1.ExecProc;
_id:= OraStoredProc1.Params.ParamByName('out_ZXJG').Value;
ShowMessage(_id);
end;
执行时出现指定的LOB定位器无效。谁知道,高分送上。
解决方案 »
- delphi中有个函数功能是: 函数名(条件,真时返回,假时返回)的函数是哪个啊
- 【简单问题】DELPHI如何同时访问多个ACCESS数据库
- 急求一个对文件操作的函数,谢谢!
- 我也来祝贺...
- 禁止鼠标对窗体左右下的边拉伸和收缩是FORM的那个属性?
- 这段SQL语句在DELPHI下如何实现,在线等
- 高手不要错过哦
- word已经打开文件,我在我的软件里还想打开它,查看东西,用reset()不行,怎么办?(急)
- uses 的內容放在interface與放在implementation下面有什么區別?
- 求 关于delphi 计量相关的 开发技术
- 旺旺在线问题
- 用DELPHI对ACCESS中一个表结构转换为新表(表长度不定,结构特殊)
BLOB 和 CLOB 数据类型通过 LOB 定位器(指定数据地址) 存储在表列中;实际的 BLOB 和 CLOB 数据存储在独立的表空间中。与之不同的是,LONG 或 LONG RAW 类型存储在数据库中,表中存放着它们的实际值。当存取 LOB 列时,返回的是定位器,而不像 LONG 或 LONG RAW 数据类型那样返回它的实际值。
例如,分析这个表的定义:CREATE TABLE ClobTable (
Id NUMBER,
Name VARCHAR2(30),
Value CLOB
)如果我们不通过值参数初始化 LOB 定位器, Oracle 将不允许使用下面的语句来更新数据表:UPDATE ClobTable
SET
Name = :Name,
Value = :ValueWHERE
Id = :Id要初始化 LOB 定位器,你必须使用 EMPTY_BLOB 或 EMPTY_CLOB Oracle 函数。要返回初始化后的定位器,应在同样的语句中使用 RETURNING 子句。例如:UPDATE ClobTable
SET
Name = :Name,
Value = EMPTY_CLOB()
WHERE
Id = :Id
RETURNING
Value
INTO
:ValueODAC 写 LOB 数据到 Oracle 且返回初始值字段,需使用:值参数。
存储过程允许自动初始化 LOB 值,方法如下:CREATE OR REPLACE
PROCEDURE ClobTableUpdate (p_Id NUMBER, p_Name VARCHAR2,
p_Value OUT CLOB)
is
begin
UPDATE ClobTable
SET
Name = p_Name,
Value = EMPTY_CLOB()
WHERE
Id = p_Id
RETURNING
Value
INTO
p_Value;
end;注意:值参数被声明为 OUT。同时,设置 LOB 数据类型的参数的 ParamType 属性为 ptInput ,且指定它到所需的数据前来实际调用存储过程。我们可以这样调用前面声明的存储过程:OraStroredProc1.StoredProcName := ’ClobTableUpdate’;
OraStroredProc1.Prepare;
OraStroredProc1.ParamByName(’p_Id’).AsInteger := Id;
OraStroredProc1.ParamByName(’p_Name’).AsString := Name;
OraStroredProc1.ParamByName(’Value’).ParamType := ptInput;
OraStroredProc1.ParamByName(’Value’).AsCLOBLocator.
LoadFromFile(FileName);
OraStroredProc1.Execute;对 ODAC 来说,在 LOB 操作中使用 ParamType 属性是非常重要的。如果 ParamType 是 ptInput , ODAC 写数据到服务器,如果 ParamType 是 ptOutput,它则读取数据。你可以使用 LOB 参数的 dtBlob 和 dtMemo 数据类型来编写普通的 DML 语句。在这种情况下, Oracle 自动将 LONG 和 LONG ROW 类型的值转换为 CLOB 或 BLOB 数据。
转载:出处就是csdn博客