无法使用SQL插入数字-整列已删除/数字为空

时间:2019-06-28 11:18:09

标签: sql oracle sql-insert database-sequence

我正在尝试通过一个循环将一个数字作为ID插入数据库的列中,该循环通过Sequence设置新ID。当我尝试将其插入时,尚未创建该行,或者我的号码应为空的字段。

仅当我尝试插入序列的当前编号的值时才会出现。可以插入任何其他号码。 id不是主键或外键,只是普通字段。我尝试将其插入几种不同的方法中,例如从字段中选择它或对插入脚本中的值进行硬编码。如果用sid的值对其进行硬编码,则不会插入任何行。

insert into SCHULP_BEZIEHUNG (R_ID, B_ID,S_ID,WDH,HOTEL)
 values( 
      SEQ_SCHULP_ID.NEXTVAL
       ,l_selected(i)
       ,(select distinct SSID from SCHULP_SCHULUNGEN where SID = :P2_ID and SSID is not null)    
       ,5
       ,'test');

我的预期结果是它在S_ID列中插入了SID的数量

数据库图像:

select from here

insert here

1 个答案:

答案 0 :(得分:0)

这是什么:

  

仅当我尝试插入序列的当前编号的值时才会出现。

有关?如果实际上尝试的seq_schulp_id.nextval实际上是seq_schulp_id.currval,那么可以,它只有在您首先获取nextval时才能起作用,因为尚未在currval中定义{当前会话。

另一个异议进入:P2_ID,这是Apex页面项。如果您希望能够使用它,仅在屏幕上看到仅仅是不够的-它必须处于会话状态。最简单的方法是先提交页面,然后运行将插入数据的过程。

另一方面,您说您对值(哪个值?:P2_ID?)进行了硬编码,但是您仍然没有设法将值插入S_ID列中。这意味着整个查询:

select distinct SSID from SCHULP_SCHULUNGEN where SID = :P2_ID and SSID is not null

一无所获。

您发布的代码不完整(l_selected(i)是什么?);我无法判断是否还有其他错误。