Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何调试一个";除零“;postgresql中的错误_Sql_Debugging_Postgresql - Fatal编程技术网

如何调试一个";除零“;postgresql中的错误

如何调试一个";除零“;postgresql中的错误,sql,debugging,postgresql,Sql,Debugging,Postgresql,我在一次选择中使用了许多不同的视图和plpgsql函数/聚合。当我在某些数据集上运行此SELECT时,我会得到一个除以零的错误。不幸的是,我没有得到任何精确的零除发生的细节 有什么好方法可以精确定位问题发生的确切位置吗?在psql中运行相同的代码将产生更多有用的信息,例如: ERROR: division by zero CONTEXT: PL/pgSQL function "mean_estimator_sfunc" line 10 during statement block local

我在一次选择中使用了许多不同的视图和plpgsql函数/聚合。当我在某些数据集上运行此SELECT时,我会得到一个
除以零的错误。不幸的是,我没有得到任何精确的零除发生的细节


有什么好方法可以精确定位问题发生的确切位置吗?

在psql中运行相同的代码将产生更多有用的信息,例如:

ERROR:  division by zero
CONTEXT:  PL/pgSQL function "mean_estimator_sfunc" line 10 during statement block local variable initialization

张贴你的功能。下面是Oracle文档中关于如何避免异常的一些好例子。仅SQL也可以执行相同操作:


你从哪里得到这个信息的?这是全部信息吗?@ClodoaldoNeto:很好!我在我的SQLIDE(AquaDataStudio)中得到了错误。在psql中运行相同的代码时,我得到了相当多的上下文信息。我的问题不是将
除以零
,而是找到需要修复它的位置。@@Karl Bartel-发布您的代码,也许我们可以帮助您找到它出现的位置。在我个人看来,最好确保代码中永远不会出现例外情况。如果可能的话,我会重写/添加代码,在你找到它之后处理所有可能的异常。当然,谢谢你的提议。但是这里要发布的代码太多了,我问这个问题只是为了找到一个更具针对性的方法,找到我忘记正确处理除法为零的情况的地方。psql输出主要是我想要的。使用默认设置,您还应该在db日志文件中找到这些信息。
DECLARE
  stock_price NUMBER := 9.73;
  net_earnings NUMBER := 0;
  pe_ratio NUMBER;
BEGIN
 pe_ratio :=
  CASE net_earnings
     WHEN 0 THEN NULL
     ELSE stock_price / net_earnings
  end;
END;
/