Получить BLOB из хранимой процедуры в Oracle - PullRequest
0 голосов
/ 08 марта 2012

Это моя хранимая процедура:

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

Как я могу получить блоб из хранимой процедуры?

Ответы [ 2 ]

1 голос
/ 08 марта 2012

Один из способов вызвать эту процедуру:

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

Сообщение об ошибке указывает, что вы вызываете это с неправильным типом параметров или с неправильным количеством параметров. Первый параметр должен иметь тип номера, второй параметр типа blob.

0 голосов
/ 08 марта 2012

Попробуйте что-то вроде (использование 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...