我正在尝试更新Oracle中的一个包,来自SQL Server,这一直令人困惑。
我编写了一个批处理文件,首先运行 .spec 文件,然后运行 .body 文件,但即使手动运行它也无效。
我使用这种语法:
sqlplus username/password@databasename @c:\temp\myfile.spec
sqlplus username/password@databasename @c:\temp\myfile.body
当我回到Sql Developer时,我可以查看包中的存储过程,看看它们是否已经更新。
为什么我的套餐没有更新?
答案 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 * Plussqlplus username/password@databasename
然后从SQL * Plus提示符运行脚本:
set echo on
@c:\temp\myfile.spec
你应该能够看到这样的事情,包括任何错误信息。