Полагаю, вы хотите использовать результирующий набор оператора SELECT
в качестве ввода оператора INSERT
? Да, это возможно, см. справочник по языку FB . Часть, которая, вероятно, вызывает вашу проблему, заключается в том, что вы не используете ключевое слово VALUES
в этом случае, оператор будет выглядеть как
INSERT INTO table (fields) SELECT ...
Или, если вы хотите, чтобы в одном операторе были и "постоянные значения" (как в операторе INSERT INTO ... VALUES(...)
), и "динамические значения" (используя оператор SELECT
в качестве источника), вы можете объединить их, то есть
INSERT INTO table (fields)
SELECT fields FROM tab_src ...
UNION
SELECT constants FROM RDB$DATABASE
где constants
- список значений соответствующего типа.
UPDATE
ОК, я думаю, что вы на самом деле хотите что-то вроде
Insert into table_1 (f1, f2, f3, f4, f5, f6, f7, f8, f9, FL1, FL2, FL3)
VALUES(:p_f1, :v_f2, :p_f3, :p_f4,
abs(:v_f5 * :p_f5),
abs(:v_f6 * :p_f6),
:v_f7, :v_f8, :v_9,
(Select f_lookup_id from lookup_table where (f_res >= :v_res) And (f2_lookup_id = :p_id1)),
(Select f_lookup_id from lookup_table where (f_res >= :v_res) And (f2_lookup_id = :p_id2)),
(Select f_lookup_id from lookup_table where (f_res >= :v_res) And (f2_lookup_id = :p_id3))
)