从Oracle中的存储过程获取BLOB

时间:2012-03-08 11:37:27

标签: oracle plsql

这是我的存储过程:

CREATE OR REPLACE
PROCEDURE prodecureName
  (
    firstArgument IN NUMBER,
    secondArgument OUT BLOB )
AS
BEGIN
  SELECT secondArgument 
  INTO prodecureName.secondArgument 
  FROM tableName
  WHERE firstArgument = prodecureName.firstArgument ;
END;

secondArgument列的数据类型有效(两者都是BLOB)。 在执行此过程期间,我收到此错误:

  

调用prodecureName

时参数的数量或类型错误

如何从存储过程中获取blob?

2 个答案:

答案 0 :(得分:1)

调用此过程的一种方法:

declare
  l_blob blob;
begin
  procedurename(1,l_blob);
end;

错误消息表明您使用错误的参数类型或错误的参数数调用此方法。第一个参数必须是类型编号,类型为blob的第二个参数。

答案 1 :(得分:0)

尝试类似的东西(使用clob而不是blob,但方法相同):

drop table tst_clob_tab;
create table tst_clob_tab
(
  id number,
  my_clob clob
);

-- Oracle will implicitly convert to clob (9i greater)
insert into tst_clob_tab(id,my_clob) values (1,'This is some large value...');
commit;

-- Create procedure
create or replace procedure tst_clob(p_1 in number, p_2 out clob) as
begin
  select my_clob
  into p_2
  from tst_clob_tab
  where id = p_1;
end;

-- Call procedure
declare
  l_clob clob;
begin
  tst_clob(1,l_clob);
  dbms_output.put_line('Clob: ' || l_clob);
end;