表和存储过程
create table ttest
(
t1 varchar2(30) not null,
t2 varchar2(30) not null,
t3 date not null,
t4 NUMBER(4,2) not null
);
create or replace procedure PRO_test(
v_xh in VARCHAR2,
v_xh2 in varchar2,
v_xh3 in date,
v_xh4 in number,
v_photo1 in blob, --第一张图片
v_res out varchar2
) is
begin
v_res:='0';
insert into ttest(t4,t1,t2,t3) values(v_xh4,v_xh,v_xh2,v_xh3);
commit;
end PRO_test;
/
delphi调用存储过程:
SP_wchufa.Parameters.Clear; SP_wchufa.Parameters.Add;
SP_wchufa.Parameters[0].Name:='V_XH';
SP_wchufa.Parameters[0].DataType:=ftString;
SP_wchufa.Parameters[0].Direction:=pdinput;
SP_wchufa.Parameters[0].Size:=2000; SP_wchufa.Parameters.Add;
SP_wchufa.Parameters[1].Name:='V_xh2';
SP_wchufa.Parameters[1].DataType:=ftString;
SP_wchufa.Parameters[1].Direction:=pdinput;
SP_wchufa.Parameters[1].Size:=2000; SP_wchufa.Parameters.Add;
SP_wchufa.Parameters[2].Name:='V_xh3';
SP_wchufa.Parameters[2].DataType:=ftdate;
SP_wchufa.Parameters[2].Direction:=pdinput;
SP_wchufa.Parameters[2].Size:=2000; SP_wchufa.Parameters.Add;
SP_wchufa.Parameters[3].Name:='V_xh4';
SP_wchufa.Parameters[3].DataType:=ftBCD;
SP_wchufa.Parameters[3].Direction:=pdinput;
SP_wchufa.Parameters[3].Precision:=4;
SP_wchufa.Parameters[3].Size:=0; SP_wchufa.Parameters.Add;
SP_wchufa.Parameters[4].Name:='V_PHOTO1';
SP_wchufa.Parameters[4].DataType:=ftBlob;
SP_wchufa.Parameters[4].Direction:=pdinput;
SP_wchufa.Parameters[4].Size:=999; SP_wchufa.Parameters.Add;
SP_wchufa.Parameters[5].Name:='V_RES';
SP_wchufa.Parameters[5].DataType:=ftString;
SP_wchufa.Parameters[5].Direction:=pdoutput;
SP_wchufa.Parameters[5].Size:=2000; SP_wchufa.Parameters.ParamByName('V_XH').Value:='1234566666666666';
SP_wchufa.Parameters.ParamByName('V_xh2').Value:='210';
SP_wchufa.Parameters.ParamByName('V_xh3').Value:='2006-08-15 13:32:30';
SP_wchufa.Parameters.ParamByName('V_xh4').Value:=4.2;
SP_wchufa.Parameters.ParamByName('v_photo1').LoadFromFile('d:\pic\20060621194742-03-01-103.jpg',ftBlob);
SP_wchufa.Prepared:=true;
try
SP_wchufa.ExecProc;
finally
end;
问题在哪里呀??试了两天也,就是blob参数过不去,如果没有blob参数存储过程是好用的。先谢谢了!
create table ttest
(
t1 varchar2(30) not null,
t2 varchar2(30) not null,
t3 date not null,
t4 NUMBER(4,2) not null
);
create or replace procedure PRO_test(
v_xh in VARCHAR2,
v_xh2 in varchar2,
v_xh3 in date,
v_xh4 in number,
v_photo1 in blob, --第一张图片
v_res out varchar2
) is
begin
v_res:='0';
insert into ttest(t4,t1,t2,t3) values(v_xh4,v_xh,v_xh2,v_xh3);
commit;
end PRO_test;
/
delphi调用存储过程:
SP_wchufa.Parameters.Clear; SP_wchufa.Parameters.Add;
SP_wchufa.Parameters[0].Name:='V_XH';
SP_wchufa.Parameters[0].DataType:=ftString;
SP_wchufa.Parameters[0].Direction:=pdinput;
SP_wchufa.Parameters[0].Size:=2000; SP_wchufa.Parameters.Add;
SP_wchufa.Parameters[1].Name:='V_xh2';
SP_wchufa.Parameters[1].DataType:=ftString;
SP_wchufa.Parameters[1].Direction:=pdinput;
SP_wchufa.Parameters[1].Size:=2000; SP_wchufa.Parameters.Add;
SP_wchufa.Parameters[2].Name:='V_xh3';
SP_wchufa.Parameters[2].DataType:=ftdate;
SP_wchufa.Parameters[2].Direction:=pdinput;
SP_wchufa.Parameters[2].Size:=2000; SP_wchufa.Parameters.Add;
SP_wchufa.Parameters[3].Name:='V_xh4';
SP_wchufa.Parameters[3].DataType:=ftBCD;
SP_wchufa.Parameters[3].Direction:=pdinput;
SP_wchufa.Parameters[3].Precision:=4;
SP_wchufa.Parameters[3].Size:=0; SP_wchufa.Parameters.Add;
SP_wchufa.Parameters[4].Name:='V_PHOTO1';
SP_wchufa.Parameters[4].DataType:=ftBlob;
SP_wchufa.Parameters[4].Direction:=pdinput;
SP_wchufa.Parameters[4].Size:=999; SP_wchufa.Parameters.Add;
SP_wchufa.Parameters[5].Name:='V_RES';
SP_wchufa.Parameters[5].DataType:=ftString;
SP_wchufa.Parameters[5].Direction:=pdoutput;
SP_wchufa.Parameters[5].Size:=2000; SP_wchufa.Parameters.ParamByName('V_XH').Value:='1234566666666666';
SP_wchufa.Parameters.ParamByName('V_xh2').Value:='210';
SP_wchufa.Parameters.ParamByName('V_xh3').Value:='2006-08-15 13:32:30';
SP_wchufa.Parameters.ParamByName('V_xh4').Value:=4.2;
SP_wchufa.Parameters.ParamByName('v_photo1').LoadFromFile('d:\pic\20060621194742-03-01-103.jpg',ftBlob);
SP_wchufa.Prepared:=true;
try
SP_wchufa.ExecProc;
finally
end;
问题在哪里呀??试了两天也,就是blob参数过不去,如果没有blob参数存储过程是好用的。先谢谢了!
(
t1 varchar2(30) not null,
t2 varchar2(30) not null,
t3 date not null,
t4 NUMBER(4,2) not null
);
不过commit;这一句,不知道oracle是否可以这样单独用。并且不明白,你表中没有这个blog得字段,在存储过程中添加这个干吗,就是好玩吗??你在表中添加一个这样得字段试试。另外就是注意一下你参数得顺序,因为如果你用 SP_wchufa.Parameters.Add;添加一个参数,那么这个参数是和存储过程得参数循序相对应得,并不是按照你得名字。
create table ttest
(
t1 varchar2(30) not null,
t2 varchar2(30) not null,
t3 date not null,
t4 NUMBER(4,2) not null,
t5 blob not null
);
create or replace procedure PRO_test(
v_xh in VARCHAR2,
v_xh2 in varchar2,
v_xh3 in date,
v_xh4 in number,
v_photo1 in blob, --第一张图片
v_res out varchar2
) is
begin
v_res:='0';
insert into ttest(t1,t2,t3,t4,t5) values(v_xh,v_xh2,v_xh3,v_xh4,v_photo1);
commit;
end PRO_test;
/
调用部分:
SP_wchufa.ProcedureName:='PRO_test';
// sp_lock.ParamBindMode:=pbByName;// 存储过程参数列表
// V_XH 序号 Varchar2(16) IN N
SP_wchufa.Parameters.Clear;
// SP_wchufa.Refresh;
SP_wchufa.Parameters.Add;
SP_wchufa.Parameters[0].Name:='V_XH';
SP_wchufa.Parameters[0].DataType:=ftString;
SP_wchufa.Parameters[0].Direction:=pdinput;
SP_wchufa.Parameters[0].Size:=2000;
//V_FZJG 发证机关 Varchar2(8) IN N
SP_wchufa.Parameters.Add;
SP_wchufa.Parameters[1].Name:='V_xh2';
SP_wchufa.Parameters[1].DataType:=ftString;
SP_wchufa.Parameters[1].Direction:=pdinput;
SP_wchufa.Parameters[1].Size:=2000; SP_wchufa.Parameters.Add;
SP_wchufa.Parameters[2].Name:='V_xh3';
SP_wchufa.Parameters[2].DataType:=ftdate;
SP_wchufa.Parameters[2].Direction:=pdinput;
SP_wchufa.Parameters[2].Size:=2000; SP_wchufa.Parameters.Add;
SP_wchufa.Parameters[3].Name:='V_xh4';
SP_wchufa.Parameters[3].DataType:=ftBCD;
SP_wchufa.Parameters[3].Direction:=pdinput;
SP_wchufa.Parameters[3].Precision:=4;
SP_wchufa.Parameters[3].Size:=0; SP_wchufa.Parameters.Add;
SP_wchufa.Parameters[4].Name:='V_PHOTO1';
SP_wchufa.Parameters[4].DataType:=ftBlob;
SP_wchufa.Parameters[4].Direction:=pdinput;
// SP_wchufa.Parameters[4].Size:=100; SP_wchufa.Parameters.Add;
SP_wchufa.Parameters[5].Name:='V_RES';
SP_wchufa.Parameters[5].DataType:=ftString;
SP_wchufa.Parameters[5].Direction:=pdoutput;
SP_wchufa.Parameters[5].Size:=2000; SP_wchufa.Parameters.ParamByName('V_XH').Value:='1234566666666666';
SP_wchufa.Parameters.ParamByName('V_xh2').Value:='210';
SP_wchufa.Parameters.ParamByName('V_xh3').Value:='2006-08-15 13:32:30';
SP_wchufa.Parameters.ParamByName('V_xh4').Value:=4.2;
SP_wchufa.Parameters.ParamByName('v_photo1').LoadFromFile('d:\pic\20060621194742-03-01-103.JPG',ftBlob);
SP_wchufa.Prepared:=true;
try
SP_wchufa.ExecProc;
finally
if SP_wchufa.Parameters.ParamByName('V_RES').Value<>0 then
begin
//失败处理
end;
SP_wchufa.Prepared:=false;
end;
问题是一样的,是参数设置部分的问题,还是delphi接口方面的问题?
應該設置參數類型