ORA-06550的问题,怎么解决

suotiancheng 2007-11-21 10:02:39
建一张表,用它来存储XML文档.
1、建表:
create table TEST_XMLTYPE
(
VAR XMLTYPE
);
2、建目录:
create or replace directory MYFILE
as 'g:\file';
且保证g:\file下面有一个simple.xml文件。
3、创建存储过程
create or replace procedure prc_test_xmltype(p_path varchar2,p_file varchar2)
is
v_file bfile;
v_xml xmltype;
v_clob clob;
begin
v_clob:=empty_clob();
v_file:=bfilename(p_path,p_file);
dbms_lob.fileopen(v_file,dbms_lob.file_readonly);
dbms_lob.loadfromfile(v_clob,v_file,dbms_lob.getlength(v_file));
dbms_lob.fileclose(v_file);

v_xml:=xmltype.createXML(v_clob);
insert into test_xmltype(var) values(v_xml);

commit;
end prc_test_xmltype;
4、存储过程运行没有问题,但当我执行时,却报错了。
SQL> exec prc_test_xmltype;

begin prc_test_xmltype; end;

ORA-06550: 第 1 行, 第 7 列:
PLS-00306: 调用 'PRC_TEST_XMLTYPE' 时参数个数或类型错误
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored

请问是什么原因,帮忙解决一下。谢谢。
...全文
76187 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
KuKayYou 2012-07-25
  • 打赏
  • 举报
回复
是参数的类型不对 ,仔细看一下 。。。
wangpengpengwang 2012-07-12
  • 打赏
  • 举报
回复
来学习学习
Croatia 2007-11-21
  • 打赏
  • 举报
回复
不指定参数类型的话,默认就是in.
Croatia 2007-11-21
  • 打赏
  • 举报
回复
4、存储过程运行没有问题,但当我执行时,却报错了。

这句话都有问题,赫赫。你想说,你编译成功了,执行失败了,是吧。

你的两个参数,都没有放进去,怎么不报错?
ricky414 2007-11-21
  • 打赏
  • 举报
回复
参数有问题。请指定是IN还是OUT
hhtwya 2007-11-21
  • 打赏
  • 举报
回复
CREATE OR REPLACE PROCEDURE eygle_load_blob (pfname VARCHAR2,pdesc varchar2) IS
src_file BFILE;
dst_file BLOB;
lgh_file BINARY_INTEGER;
BEGIN
src_file := bfilename('DBDIR', pfname);
INSERT INTO eygle_blob (fname,fdesc,fpic)
VALUES ('hht.sql','sql',EMPTY_BLOB());
RETURNING fpic INTO dst_file;

SELECT fpic INTO dst_file
FROM eygle_blob WHERE fname = pfname FOR UPDATE;

dbms_lob.fileopen(src_file, dbms_lob.file_readonly);
lgh_file := dbms_lob.getlength(src_file);
dbms_lob.loadfromfile(dst_file, src_file, lgh_file);

UPDATE eygle_blob SET fpic = dst_file;
WHERE fname = pfname;

dbms_lob.fileclose(src_file);

commit;
END;
hhtwya 2007-11-21
  • 打赏
  • 举报
回复
create or replace procedure utl_file_read as
f utl_file.file_type;
fp_buffer varchar2(4000);
begin
f := utl_file.fopen('DBDIR','hht.sql','R');
utl_file.get_line(f,fp_buffer);
--dbms_output.put_line(fp_buffer);
INSERT INTO C VALUES(fp_buffer);
--utl_file.get_line(f,fp_buffer);
--INSERT INTO C VALUES(fp_buffer);
--dbms_output.put_line(fp_buffer);
utl_file.fclose(f);
COMMIT;
end;
Croatia 2007-11-21
  • 打赏
  • 举报
回复
是的,存储过程出了错。
suotiancheng 2007-11-21
  • 打赏
  • 举报
回复
修改后,好像还是会报错.
SQL> exec prc_test_xmltype('MYFILE','SIMPLE.XML');

begin prc_test_xmltype('MYFILE','SIMPLE.XML'); end;

ORA-22275: 指定的 LOB 定位器无效
ORA-06512: 在"SYS.DBMS_LOB", line 616
ORA-06512: 在"TEST_VIEW.PRC_TEST_XMLTYPE", line 10
ORA-06512: 在line 1

这是什么原因?难不成存储过程有问题?

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧