【问题标题】:Passing Variable in Sum Function in PLSQL在 PLSQL 的 Sum 函数中传递变量
【发布时间】:2019-03-27 14:13:33
【问题描述】:

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

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 行

【问题讨论】:

    标签: plsql plsqldeveloper plsql-package


    【解决方案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;
    

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

    【讨论】:

    • 它,工作,谢谢
    猜你喜欢
    • 2011-05-17
    • 2019-06-11
    • 1970-01-01
    • 2012-04-12
    • 2022-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多