Передача переменной в функцию Sum в PLSQL - PullRequest
0 голосов
/ 27 марта 2019

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

DECLARE
v_col varchar2(100);
v_sum varchar2(100);
begin
v_col:='"15-JAN-2012"';
dbms_output.put_line(v_col);
SELECT SUM(v_col) INTO v_sum from BAL_HISTORY;
dbms_output.put_line(v_sum);
end;

Это ошибка: ORA-01722: неверный номер ORA-06512: в строке 7

1 Ответ

0 голосов
/ 27 марта 2019

Вам нужно использовать динамический sql:

DECLARE
v_col varchar2(100);
v_sum varchar2(100);
begin
v_col:='"15-JAN-2012"';
dbms_output.put_line(v_col);
EXECUTE IMMEDIATE 'SELECT SUM('||v_col||')  from BAL_HISTORY' INTO v_sum;
dbms_output.put_line(v_sum);
end;

Кстати: база данных, созданная таким образом, выглядит для меня странно, но приведенный выше код будет работать ...

...