多个存储过程或包,可以运行脚本一次更新吗?怎么做?

Jane_64 2008-05-27 10:20:15
修改好的多个存储过程或包,要到用户服务器上更新使用,可以运行脚本一次更新吗?怎么做?
还是需要一个一个单独更新?(这个更新多了的话,很麻烦的)
...全文
193 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jane_64 2008-05-27
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 bobfang 的回复:]
不要在sql window中做,执行命令是在command window中做
[/Quote]

谢谢!这样行!
bobfang 2008-05-27
  • 打赏
  • 举报
回复
不要在sql window中做,执行命令是在command window中做
Jane_64 2008-05-27
  • 打赏
  • 举报
回复
在每个SQL之间加"/" ,与不加是一样的效果
Jane_64 2008-05-27
  • 打赏
  • 举报
回复
chenqingyu :你想这样做的话,要在每个SQL之间加"/"

提示:无效SQL语句
chenqingyu 2008-05-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 Jane_64 的回复:]
引用 1 楼 hebo2005 的回复:
可以的啊
我们经常就是把一些建表,插入数据,建存储过程的语句写成个sql脚本,然后运行一次就行了


不行啊,我生成sql脚本,在PL/SQL的SQL WINDOW窗口执行,它会将两个过程放在一个里,如:
CREATE OR REPLACE PROCEDURE test1
is
begin
...
end test1;

CREATE OR REPLACE PROCEDURE test2
is
begin
...
end test2;

执行后test1中也包含了test2的代码,test2没建起…
[/Quote]

你想这样做的话,要在每个SQL之间加"/"
chenqingyu 2008-05-27
  • 打赏
  • 举报
回复
编译当前用户下所有的无效对象.

CREATE OR REPLACE PROCEDURE compile_all_obj AS
CURSOR cur_invalid_objects IS
SELECT object_name, object_type
FROM user_objects
WHERE status = 'INVALID';
rec_columns cur_invalid_objects%ROWTYPE;
err_status NUMERIC;
BEGIN
dbms_output.enable(10000);
OPEN cur_invalid_objects;
LOOP
FETCH cur_invalid_objects
INTO rec_columns;
EXIT WHEN cur_invalid_objects%NOTFOUND;

dbms_output.put_line('Recompiling ' || rec_columns.object_type || ' ' ||
rec_columns.object_name);
dbms_ddl.alter_compile(rec_columns.object_type,
NULL,
rec_columns.object_name);
END LOOP;
CLOSE cur_invalid_objects;
EXCEPTION
WHEN OTHERS THEN
BEGIN
err_status := SQLCODE;
dbms_output.put_line(' Recompilation failed : ' ||
SQLERRM(err_status));

IF (cur_invalid_objects%ISOPEN) THEN
CLOSE cur_invalid_objects;
END IF;

EXCEPTION
WHEN OTHERS THEN
NULL;
END;
END;
Jane_64 2008-05-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ehuman 的回复:]
不用,
可以使用dos dir命令生成列表,加上替换语句就可以。
如果需要,给你再详细说明。
[/Quote]

举例说说看.
Jane_64 2008-05-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hebo2005 的回复:]
可以的啊
我们经常就是把一些建表,插入数据,建存储过程的语句写成个sql脚本,然后运行一次就行了
[/Quote]

不行啊,我生成sql脚本,在PL/SQL的SQL WINDOW窗口执行,它会将两个过程放在一个里,如:
CREATE OR REPLACE PROCEDURE test1
is
begin
...
end test1;

CREATE OR REPLACE PROCEDURE test2
is
begin
...
end test2;

执行后test1中也包含了test2的代码,test2没建起来.

请问,你在那执行的?
ehuman 2008-05-27
  • 打赏
  • 举报
回复
不用,
可以使用dos dir命令生成列表,加上替换语句就可以。
如果需要,给你再详细说明。
hebo2005 2008-05-27
  • 打赏
  • 举报
回复
可以的啊
我们经常就是把一些建表,插入数据,建存储过程的语句写成个sql脚本,然后运行一次就行了

17,086

社区成员

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

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