小编Cas*_*sey的帖子

消除 plsql 关联数组中的重复项

我想避免在 plsql 关联数组中存储重复值。例如:在循环中处理和添加值时,如果数组已包含元素值,则不应存储该值,因为该元素已存在于 plsql 表中。

例如:如果数组在循环处理期间存储了单词 USA,那么如果条件变得使得 USA 再次成为循环的下一次迭代中的答案,则不应存储它,因为它已经存在。

同样,如果 GER 不存在(同样,基于某些查找),那么它会第一次被存储,但随后不会被存储。

我尝试查找“存在”,但它需要参数元素编号/位置,否则我的使用可能是错误的。有没有办法在存储之前检查整个集合并确定某个值是否存在?

  • 凯西

oracle oracle11g

4
推荐指数
1
解决办法
5484
查看次数

当包含(和)时使用regexp_substr提取字符串的一部分

我想使用regexp在oracle中提取字符串的以下部分:

String: FN_SUM(ACCRUED_INTEREST)
Output expected: ACCRUED_INTEREST
Run Code Online (Sandbox Code Playgroud)

我试过了 :

select regexp_substr('FN_SUM(ACCRUED_INTEREST)','([^)]') from dual;
Run Code Online (Sandbox Code Playgroud)

这给了我ORA-12725错误.

任何使用正则表达式的解决方案都将非常感激.

regex oracle plsql

2
推荐指数
1
解决办法
1753
查看次数

编译无效的oracle程序

我有一个包装程序(proc_main)调用其中的一些程序.

create or replace Procedure proc_main
as
begin

proc_child1;

proc_child2;

proc_child3;

proc_compile_invalids; -- This invokes "alter procedure <procedure_name> compile" statement for all the invalids.

end;
/
Run Code Online (Sandbox Code Playgroud)

proc_child过程应用一些处理逻辑,其中包含一些重命名表的步骤.

这使程序无效,这就是为什么我有proc_compile_invalids过程再次将它们设置为有效状态的原因.

我的问题是:当我执行proc_main过程时,它会使主程序和内部子程序无效.因此,当proc_compile_invalids作为最后一步被调用时,它会在尝试重新编译主调用过程时挂起.

显然,如果我删除最后一步并单独执行它不是问题.

我知道我可以通过注释编译过程并将其作为独立执行来将它们分成2个不同的调用.而且我也知道这是一个美化步骤,因为oracle会在下次执行之前尝试编译一个过程.所以,无论如何,残疾人变得有效.但是,在当天执行结束时,他们都处于无效状态,如果可以避免,我会受到权力的质疑!

所以,只是想知道我是否可以避免分离调用并仍然将其保留为主过程的最后一步.

任何想法/指针都非常感激.

oracle plsql oracle11g

2
推荐指数
1
解决办法
2591
查看次数

标签 统计

oracle ×3

oracle11g ×2

plsql ×2

regex ×1