Как добавить локальную переменную в PL/SQL INSERT INTO с помощью подзапроса

У меня есть вопрос по Oracle PL/SQL. У меня есть INSERT INTO, который отлично работает:

DECLARE
   l_filename   VARCHAR2 (1024);      
BEGIN
   l_filename := 'some value';
     INSERT INTO aff_attach
        (file_id, file_name, mime_type, attachment, file_size)
        SELECT ID, l_filename, mime_type, blob_content,DOC_SIZE
          FROM apex_application_files
          WHERE filename = l_filename AND created_by = :app_user;
END:

Теперь в том же операторе INSERT INTO я хотел бы включить другое поле в aff_attach (AFF_EVENT_FKEY). Это значение не будет получено из оператора SELECT. Если я определяю l_aff_event_fkey и перед оператором Insert я назначаю l_aff_event_fkey значение 9, как я могу включить это в оператор Insert Into? Спасибо, что посмотрели это.


person user3138025    schedule 29.04.2018    source источник


Ответы (1)


Его можно добавить в оператор SELECT (как константу в SELECT):

DECLARE

   l_filename   VARCHAR2 (1024);
   v_aff_event_fk NUMBER;

BEGIN
   l_filename := 'some value';
   v_aff_event_fk := 9;

     INSERT INTO aff_attach
        (file_id, file_name, mime_type, attachment, file_size, AFF_EVENT_FKEY)
        SELECT ID, l_filename, mime_type, blob_content,DOC_SIZE, v_aff_event_fk
          FROM apex_application_files
          WHERE filename = l_filename AND created_by = :app_user;
END:
person Glenn    schedule 29.04.2018
comment
Работал отлично. Спасибо! - person user3138025; 30.04.2018