首页 > 解决方案 > 无法使用 SQL 插入数字 - 删除整列/数字为空

问题描述

我试图通过一个循环在我的数据库的列中插入一个数字作为 ID,该循环通过一个序列设置新 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 的数量

数据库图片:

从这里选择

在此处插入

标签: sqloraclesql-insertdatabase-sequence

解决方案


这是什么:

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

相关?如果seq_schulp_id.nextvalwhich - 在您的尝试中 - 实际上是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)?);我不知道是否还有其他可能出错的地方。


推荐阅读