Невозможно вставить число с помощью SQL - весь столбец удален / число равно нулю - PullRequest
0 голосов
/ 28 июня 2019

Я пытаюсь вставить число в качестве идентификатора в столбец в моей базе данных с помощью цикла, который устанавливает новый идентификатор с помощью последовательности. Когда я пытаюсь вставить его, строка не была создана или поле, где должен быть мой номер, равно нулю.

Это появляется только тогда, когда я пытаюсь вставить значение текущего номера последовательности. Любой другой номер может быть вставлен. Идентификатор - это не первичный или внешний ключ, а обычное поле. Я попытался вставить его несколькими разными способами, например, выбрать его из поля или жестко закодировать значение в скрипте вставки. Если его жестко закодировано, значение 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');

Мой ожидаемый результат заключается в том, что он вставляет номер SID в столбец S_ID

Изображения базы данных:

select from here

insert here

1 Ответ

0 голосов
/ 28 июня 2019

Что это:

Это появляется только когда я пытаюсь вставить значение текущего номера последовательности.

связано с? Если 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)?); Я не могу сказать, есть ли что-то еще, что может быть не так.

...