Я пытаюсь вызвать функцию в выражении select. Это не сработало, и я прошу о помощи.вызов функции в выражении select в PL/SQL
Следующий код, как, например, и будет работать в пакете:
ФУНКЦИЯ:
Function sum_val(val1 in NUMBER, val2 in NUMBER) return float is
u float;
BEGIN
u := (val2+ val1)/100;
return u;
END sum_val;
ЗЕЬЕСТ:
PROCEDURE xy_prc(pi_table_in IN VARCHAR2) IS
BEGIN
sql_stmt := 'CREATE TABLE AS tbx
SELECT
t.*, '|| sum_val(t.val1, t.val2) ||' AS Val3
FROM '|| pi_table_in ||' t';
EXECUTE IMMEDIATE sql_stmt;
END;
Проблема здесь:
'|| sum_val(t.val1, t.val2) ||' AS Val3
В этом случае я должен объявить t.val1, t.val2, а их значения из инструкции SELECT не будут заменены.
Это также не работал:
'|| sum_val('t.val1', 't.val2') ||' AS Val3
В этом случае 't.val1', 't.val2'
будут значения (струнные)!
Это можно назвать этой функцией оператором SELECT?
Большое спасибо за ваши ответы!
Почему нет: ... '' t. *, Sum_val (t.val1, t.val2) AS Val3'' ... позволяет функции вызываться как часть выбора в динамическом SQL? почему любой '||' вообще? – xQbert
Не работает. ORA-00904 – Basti