5楼的方法我试过了 还是不行啊 现象是xxr@SERVER:~/datafile> xxr@SERVER:~/datafile> sqlplus test/test @BF_INDEX.sqlSQL*Plus: Release 10.1.0.2.0 - Production on Thu May 20 20:40:35 2010Copyright (c) 1982, 2004, Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production With the Partitioning, OLAP and Data Mining options 60
有两个文件BF_INDEX.sql BF_PROC.sql BF_INDEX.sql 里是对包体的定义 (在pl/sql里就是packages) CREATE OR REPLACE PACKAGE BF_DatabaseProc AS procedure getfilminfo(p_id in varchar2, p_cur out MY_TYPE_CURSOR ,p_error out NUMBER); procedure getfilmlist(p_type in NUMBER, p_cur out MY_TYPE_CURSOR ,p_num out NUMBER,p_error out NUMBER); ...... END; BF_PROC.sql 里是包体的实现 (在pl/sql里就是package bodies)CREATE OR REPLACE PACKAGE BODY BF_DatabaseProc AS procedure getfilminfo(p_id in varchar2, p_cur out MY_TYPE_CURSOR ,p_error out NUMBER) ... END;
你把输入的sql文件改一下, $cat tt.sql select 1 from dual; quit;再执行sqlplus看下,如果能成功,那证明sql文件必须是sql语句才行 而不能是存储过程或者包体的定义
sqlplus username/pwd@host @test.sql
现象是xxr@SERVER:~/datafile>
xxr@SERVER:~/datafile> sqlplus test/test @BF_INDEX.sqlSQL*Plus: Release 10.1.0.2.0 - Production on Thu May 20 20:40:35 2010Copyright (c) 1982, 2004, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production
With the Partitioning, OLAP and Data Mining options 60
BF_INDEX.sql 里是对包体的定义 (在pl/sql里就是packages)
CREATE OR REPLACE PACKAGE BF_DatabaseProc AS
procedure getfilminfo(p_id in varchar2, p_cur out MY_TYPE_CURSOR ,p_error out NUMBER);
procedure getfilmlist(p_type in NUMBER, p_cur out MY_TYPE_CURSOR ,p_num out NUMBER,p_error out NUMBER);
......
END;
BF_PROC.sql 里是包体的实现 (在pl/sql里就是package bodies)CREATE OR REPLACE PACKAGE BODY BF_DatabaseProc
AS
procedure getfilminfo(p_id in varchar2, p_cur out MY_TYPE_CURSOR ,p_error out NUMBER)
...
END;
$cat tt.sql
select 1 from dual;
quit;再执行sqlplus看下,如果能成功,那证明sql文件必须是sql语句才行
而不能是存储过程或者包体的定义
你也看到了,执行结果最后有个60,说明你的脚本里存储过程到了60行。这所明你BF_INDEX.sql脚本里存储过程后面少了一个斜杠“/”