2012-03-08 26 views
0

這是我的存儲過程:secondArgument列獲取從存儲過程BLOB在甲骨文

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; 

數據類型是有效的(都是BLOB)。 在執行此過程中我得到這個錯誤:

Wrong number or types of arguments in call to prodecureName

如何我可以從存儲過程BLOB?調用這個程序

+0

你能後調用代碼,太?該錯誤很可能是有 – 2012-03-08 11:44:39

+0

代碼無所謂。我嘗試從SQL Developer調用此過程。我得到這個相同的錯誤。 – ogrod87 2012-03-08 11:51:09

+2

的確很重要,因爲它似乎是錯誤的,你把它的方式...... – 2012-03-08 11:55:06

回答

1

方式一:

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

該錯誤消息表明您正在使用的錯誤類型的參數或錯誤數量的參數調用此。第一個參數必須由類型號,類型爲blob的第二個參數。

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;