尝试在Oracle Pl/sql中计算余额
我试图计算当前库存,该库存小于或等于pl/sql中输入的日期。例如:2015年1月1日<代码>和2015年1月5日<代码>我分别有两个借方<代码>100<代码>和<代码>20<代码>分录。然后在我的报告中,它应该显示我1月1日<代码>的余额<代码>100和1月5日<代码>的余额<代码>120。因此,我在函数中使用循环。但它没有显示股票总数。我的代码是:尝试在Oracle Pl/sql中计算余额,oracle,plsql,Oracle,Plsql,我试图计算当前库存,该库存小于或等于pl/sql中输入的日期。例如:2015年1月1日和2015年1月5日我分别有两个借方100和20分录。然后在我的报告中,它应该显示我1月1日的余额100和1月5日的余额120。因此,我在函数中使用循环。但它没有显示股票总数。我的代码是: V_NUM NUMBER:=0; BEGIN IF(F_DR_CR='D')THEN `IF C2%ISOPEN THEN CLOSE C2; END IF; OPEN C2; FETCH C2 IN
V_NUM NUMBER:=0;
BEGIN
IF(F_DR_CR='D')THEN
`IF C2%ISOPEN THEN
CLOSE C2;
END IF;
OPEN C2;
FETCH C2 INTO V_BAL;
LOOP
V_NUM:=V_BAL+(V_NUM);
RETURN V_NUM;
EXIT WHEN C2%NOTFOUND;
END LOOP;
END;
有人知道我的问题的解决方案吗?计算运行总数的最简单方法是使用分析总和()
毫无疑问,有人说你必须用PL/SQL解决这个问题,但这是最简单、最有效的方法。发布c2的代码。.如果是“D”,你可以尝试运行total。我们需要查看c2游标的查询。在我看来,你的代码不会运行。相反,我希望它会抛出
PLS-00372:在过程中,RETURN语句不能包含表达式。然而,很难确定,因为你还没有发布整个程序。RETURN并不像你想象的那样:你肯定是用错了。同样,如果看不到整个代码,就很难纠正逻辑。
SQL> select dt
2 , qty
3 , sum (qty) over (order by dt) as run_tot
4 from t23
5 order by dt
6 /
DT QTY RUN_TOT
--------- ---------- ----------
07-JAN-15 100 100
13-JAN-15 20 120
19-JAN-15 20 140
25-JAN-15 -30 110
SQL>