在减去两个长变量时PLSQL不编译

时间:2015-07-31 10:57:20

标签: sql plsql

我正在写一个非常基本的程序,我需要减去两个长变量并将值赋给另一个变量。但代码没有编译,我变得无望 - 为什么会这样?

create or replace PROCEDURE TrendCalculator(p_id Prodeje.product%TYPE)
AS
  v_week_last Prodeje.WEEK%TYPE;
  v_week_current Prodeje.WEEK%TYPE;
  v_year_last Prodeje.YEAR%TYPE;
  v_year_current Prodeje.YEAR%TYPE;
  v_weekly_sales_last PRODEJE.SALES%TYPE;
  v_weekly_sales_current PRODEJE.SALES%TYPE;
  v_pomocna PRODEJE.SALES%TYPE;

CURSOR c_data IS SELECT WEEK, YEAR, SALES FROM Prodeje WHERE PRODUCT = p_id ORDER BY YEAR, WEEK ASC;
BEGIN
  v_pomocna := 0;
  OPEN c_data;
  LOOP
    FETCH c_data INTO v_week_current, v_year_current, v_weekly_sales_current;
    EXIT WHEN c_data%NOTFOUND;
    IF (v_weekly_sales_last IS NOT NULL) THEN        
      DBMS_OUTPUT.PUT_LINE(p_id || ' ' || v_week_current || ' ' || v_year_current || ' ' || v_weekly_sales_current);
      v_pomocna := (v_weekly_sales_current - v_weekly_sales_last);
    END IF;
  v_week_last := v_week_current;
  v_year_last := v_year_current;
  v_weekly_sales_last := v_weekly_sales_current;
  END LOOP;
CLOSE c_data;
END;

我得到的错误消息是: 错误(19,9):PL / SQL:语句被忽略 错误(19,95):PLS-00306:调用'错误的参数数量或类型 - '

PRODEJE.SALES数据类型很长。

1 个答案:

答案 0 :(得分:0)

v_weekly_sales_last未设置为任何内容。因此第19行评估为

v_pomocna := (v_weekly_sales_current - );

这似乎是导致错误的原因。