各位大虾
小弟现在需要更新某个 package body 里面的一个存储过程 A, 希望通过直接执行一段代码把那个存储过程替换掉,可是我尝试了如下的脚本确执行报错,不知道该如何写了,希望各位帮忙看看,谢谢了 CREATE OR REPLACE PKG_GFB_UTILS.PROCEDURE SP_GFB_TRUNC_INF (p_visible_set JOB_STATUS.VISIBLE_CLONE_SET%TYPE) is BEGIN if p_visible_set = '1' then
//....................
ELSIF p_visible_set = '2' then
//....................
end if; END SP_GFB_TRUNC_INF;
小弟现在需要更新某个 package body 里面的一个存储过程 A, 希望通过直接执行一段代码把那个存储过程替换掉,可是我尝试了如下的脚本确执行报错,不知道该如何写了,希望各位帮忙看看,谢谢了 CREATE OR REPLACE PKG_GFB_UTILS.PROCEDURE SP_GFB_TRUNC_INF (p_visible_set JOB_STATUS.VISIBLE_CLONE_SET%TYPE) is BEGIN if p_visible_set = '1' then
//....................
ELSIF p_visible_set = '2' then
//....................
end if; END SP_GFB_TRUNC_INF;
因为Oracle没有给你提供这样的接口。
因为要重新编译存储过程才行。这不是Oracle 这么烂,而是Oracle的安全性决定的。变通一下吧,用package下的函数和存储过程调用一个可执行的串,就是存储过程调用一个动态串来实现你的功能,看看。
除了重新编译,似乎没有别的什么途径