在PLSQL的Sum函数中传递变量

在PLSQL的Sum函数中传递变量,plsql,plsqldeveloper,plsql-package,Plsql,Plsqldeveloper,Plsql Package,这是一段简单的代码,用于计算表中一列的总和。但是,列名在每次更改时都是动态的。为此,我尝试执行以下代码,但在函数中传递变量时它不起作用,但如果我传递了硬编码值,则它起作用 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_out

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

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

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

它可以工作,谢谢