不能在存储过程中添加两个数字。我错过了啥?

Posted

技术标签:

【中文标题】不能在存储过程中添加两个数字。我错过了啥?【英文标题】:Cant add two number in stored procedure. Did I miss something?不能在存储过程中添加两个数字。我错过了什么? 【发布时间】:2015-06-20 21:56:45 【问题描述】:

我正在使用 Oracle 的 SQL Developer 中的存储过程。 存储过程编译,两个 for 循环都按 exepted 工作。 我的问题: 例如,如果我读出像 pos."AssetValueCHF" 这样的单个变量,这是有道理的,并且给了我正确的值。但如果我想将它们添加到总值中,则为 NULL。

这是存储过程:

   create or replace 
PROCEDURE AVGCLIENTRISKPORFOLios (
  customer IN NUMBER,
  avgRisk OUT NUMBER
)AS 
  totalAsset  NUMBER ;
  riskRankXAsset NUMBER ;

BEGIN

      DBMS_OUTPUT.PUT_LINE('Starting...');

  FOR portf IN (SELECT "PortfolioId" FROM "Portfolios" WHERE "CustomerId"=customer) LOOP
    DBMS_OUTPUT.PUT_LINE('Portfolio gefunden');
    FOR pos IN (SELECT "AssetValueCHF","RiskRank" FROM "Positions" WHERE "Portfolio_PortfolioId"=portf."PortfolioId") LOOP

      /*these two lines here are the problem*/
      totalAsset:=totalAsset+pos."AssetValueCHF"; 
      riskRankXAsset:=riskRankXAsset + pos."AssetValueCHF" *pos."RiskRank" ; 

      DBMS_OUTPUT.PUT_LINE('x');   
      DBMS_OUTPUT.PUT_LINE(totalAsset);     

    END LOOP;
  END LOOP;

  avgRisk:=riskRankXAsset/totalAsset;

END AVGCLIENTRISKPORFOLIOS;

这里的输出是: 开始... 投资组合 X X X X X X X X X X Prozes bedet。

你能帮帮我吗?

我正在使用 Oracle 12.1 和 Oracle Developer 3.2.20.10

【问题讨论】:

你有有趣的代码格式化系统;) 【参考方案1】:

好的,天哪……

我工作的时间太长了……现在可以了:

 totalAsset  NUMBER :=0;
 riskRankXAsset NUMBER :=0;

那是我的错。

【讨论】:

以上是关于不能在存储过程中添加两个数字。我错过了啥?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 类选择器和单击事件,我错过了啥吗?

枢轴问题(我错过了啥)?

事件溯源和 CQRS,我错过了啥?

在 numpy 添加过程中隐含发生了啥?

用逗号替换分号,并在存储过程中的字符串的两端添加引号,以使其在IN子句中可搜索

求两个oracle存储过程例子