小编Isa*_*man的帖子

对父子表使用多表插入

使用 Oracle 的多表插入语句插入(外键约束)父子表是否安全?

通过最少的示例,我发现只要父表在into列表中的子表之前,它就可以工作。我可以依靠这个还是应该使约束可以延迟?

oracle foreign-key

9
推荐指数
2
解决办法
3751
查看次数

在 PL/SQL 中初始化关联数组

使用 PL/SQL,假设我们已经声明了一个嵌套表类型及其实例,如下所示:

type nested_tab is table of pls_integer;
tab nested_tab;.

然后我们可以按如下方式初始化我们的嵌套表:

tab := nested_tab(1, 2, 3);.

我们可以做类似的事情来初始化关联数组吗?

换句话说,对于以下关联数组:

type associative_tab is table of varchar2(100) index by pls_integer;
a_tab associative_tab;

有没有比这更短的方法:

a_tab(1) := 'hello';
a_tab(2) := 'world';
...
a_tab(100) := '100th string';

用于初始化?

plsql

6
推荐指数
1
解决办法
8570
查看次数

检索关联数组的索引作为集合

在 PL/SQL 中,假设我有一些定义如下的关联数组:

declare 
       type a_arr_t is table of PLS_INTEGER index by PLS_INTEGER;
       a_arr a_arr_t;
Run Code Online (Sandbox Code Playgroud)

然后,我按如下方式稀疏地填充数组:

begin
      a_arr(1)   := 2;
      a_arr(10)  := 4;
      a_arr(100) := 6;
end;
Run Code Online (Sandbox Code Playgroud)

是否有一些运算符或函数可以为我提供数组的索引,(1,10,100)作为某种集合,例如indices offorall语句中?

oracle plsql array

5
推荐指数
1
解决办法
254
查看次数

当子表为空时截断 Oracle 中的父表

假设我有一个parent由子表引用的父表child。该表parent已填充但未填充child。试图截断parent结果

 ORA-02449: unique/primary keys in table referenced by foreign keys  
Run Code Online (Sandbox Code Playgroud)

有没有办法向child空的 DBMS 提示,以便不需要禁用外键约束?

oracle referential-integrity truncate

4
推荐指数
2
解决办法
2万
查看次数

加载带有可变逗号的数值列

我正在使用 sqlldr 加载一个文件,该文件的字段之一是数值。

问题在于,在某些记录中,数字有逗号,而在其他记录中,则没有。

所以做类似的事情

num "to_number(:num, '999,999,999.99')",
Run Code Online (Sandbox Code Playgroud)

用逗号加载记录,但不加载那些没有逗号的记录,并且正在做

num "to_number(:num)",
Run Code Online (Sandbox Code Playgroud)

只加载那些没有逗号的。

有没有办法告诉 Oracle (sqlldr) 逗号是可选的?

oracle sql-loader

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

在多表插入中限制生成的序列值

在 Oracle 中,给定以下对象:

create table a (x number );
create table b (val number );
create table c (val number );
create sequence my_seq;
Run Code Online (Sandbox Code Playgroud)

假设我a按如下方式填充表:

insert into a (x) values (1);
insert into a (x) values (2);
insert into a (x) values (3);
insert into a (x) values (4);
Run Code Online (Sandbox Code Playgroud)

使用 中的值a,我想填充表bc如下所示:当a.x为偶数时,从序列中生成一个新数字并插入my_seq.nextvalb.valand 中c.val;否则,将my_seq.currval(最近生成的值但不是新值)插入到c.val.

我目前拥有的是一个 insert all 语句,如下所示:

insert all 
    when mod(x,2) …
Run Code Online (Sandbox Code Playgroud)

oracle insert sequence

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

正则表达式难度

我试图456从字符串中提取:123:456:如下:

select regexp_substr(':123:456:', ':(\d+):', 1, 2, 'i', 1) from dual
Run Code Online (Sandbox Code Playgroud)

但是,此查询返回null。我究竟做错了什么?

oracle regular-expression oracle-11g

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