当前位置: 代码迷 >> PB >> pb怎么传递blob类型的参数调用oracle的数据存储过程。多谢
  详细解决方案

pb怎么传递blob类型的参数调用oracle的数据存储过程。多谢

热度:59   发布时间:2016-04-29 09:40:35.0
pb如何传递blob类型的参数调用oracle的数据存储过程。谢谢

我的存储过程是oracle 9i下面的例如下面:
create or replace procedure test(

psjgbh in varchar2,image in blob,pspznm out varchar2) is
begin
  

 pspznm :='90';
 update eps set eps.image1 = image;
 -- dbms_lob.getlength(ZJWJ1);

return ;
end test;

请问再pb中如何调用?
我用下面的方式提示错误:
string a="dddd",errtext="dddd";

blob limage;

DECLARE proc1 PROCEDURE FOR test(:a,:limage);
EXECUTE proc1;

------解决方案--------------------
1、创建新的事务对象例如uo_procedure
2、将该事务对象添加到application properties的sqlca中
3、打开uo_procedure并在local external functions中声明各存储过程
4、程序中调用直接用sqlca.存储过程名(参数,..)即可
------解决方案--------------------
我觉得你可以在pb程序中通过updateblob方式更新该字段。
------解决方案--------------------
有pb调用存储过程的例子。调用方法如上所述。
------解决方案--------------------
string ls_sql,ls_rtn
string a="dddd",errtext="dddd";
blob limage; 
limage = blog("testtest")

DECLARE l_cursor DYNAMIC CURSOR FOR SQLSA;
ls_sql = "execute test(:a,:limage)"
PREPARE SQLSA FROM :ls_sql;
OPEN DYNAMIC l_cursor ;
FETCH l_cursor INTO :ls_rtn;
CLOSE l_cursor;

------------试试另外种方法
------解决方案--------------------
--修改:
string ls_sql,ls_rtn
string a="dddd",errtext="dddd";
blob limage;
limage = blob("testtest")

DECLARE l_cursor DYNAMIC CURSOR FOR SQLSA;
ls_sql = "execute test("+a+","+limage+")"
PREPARE SQLSA FROM :ls_sql;
OPEN DYNAMIC l_cursor ;
FETCH l_cursor INTO :ls_rtn;
CLOSE l_cursor; 

------解决方案--------------------
blob地这样写应该有问题
ls_sql = "execute test("+a+","+string(limage)+")" 

没有经过测试,看是否对
代码迷推荐解决方案:oracle存储过程,http://www.daimami.com/oracle-develop/177537.html
  相关解决方案