从SQLPLUS更新包

时间:2010-12-13 17:08:28

标签: oracle plsql sqlplus

我正在尝试更新Oracle中的一个包,来自SQL Server,这一直令人困惑。

我编写了一个批处理文件,首先运行 .spec 文件,然后运行 .body 文件,但即使手动运行它也无效。

我使用这种语法:

sqlplus username/password@databasename @c:\temp\myfile.spec
sqlplus username/password@databasename @c:\temp\myfile.body

当我回到Sql Developer时,我可以查看包中的存储过程,看看它们是否已经更新。

为什么我的套餐没有更新?

2 个答案:

答案 0 :(得分:4)

spec和body文件需要/使SQL * Plus创建/替换对象。

没有/

CREATE OR REPLACE PACKAGE TEST12_13 AS

PROCEDURE TEST12_13;

END;

STAGE@DB>@C:\TEST.PKS
  6  

使用/

CREATE OR REPLACE PACKAGE TEST12_13 AS

PROCEDURE TEST12_13;

END;

/

STAGE@DB>@C:\TEST.PKS

Package created.

在回复你关于将filename作为参数传递的评论时,请让SQL * Plus向你询问文件名

,而不是将文件名作为参数传递。
    wrapper.sql

ACCEPT filename_var Prompt 'Enter filename'

@c:\temp\&filename_var
/
@c:\temp\&filename_var
/

答案 1 :(得分:3)

使用

连接到SQL * Plus
sqlplus username/password@databasename

然后从SQL * Plus提示符运行脚本:

set echo on
@c:\temp\myfile.spec

你应该能够看到这样的事情,包括任何错误信息。