0

这是仅计算表中列的总和的简单代码。但是,每次更改时,列名都是动态的。为此,我尝试执行以下代码,但在函数中传递变量时它不起作用,但如果我传递硬编码值,那么它正在工作。

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 行

4

1 回答 1

1

您需要使用动态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;

顺便说一句:以这种方式设计的数据库对我来说看起来很奇怪,但上面的代码可以工作......

于 2019-03-27T14:23:06.890 回答