“引发异常”是将错误从pgplsql返回到node-postgres的唯一方法吗?

时间:2015-04-30 16:10:11

标签: postgresql node-postgres

说,我有一个pgplsql函数(例如buyItem)返回一些东西(例如买的商品参数)。在某些情况下,我想表明出现了问题所以结果是空的(例如没有足够的钱购买所需的物品)。这只是一个常见的结果,我不会把它称为异常(并且绝对不会在数据库服务器上打印错误,因为raise exception会这样做。)

所以问题是:处理此类案件的最佳做法是什么?

1 个答案:

答案 0 :(得分:1)

您的两个选项是提出异常,或者返回包含成功和错误信息的记录:

CREATE OR REPLACE FUNCTION buyItem(itemId integer)
RETURNS RECORD
AS $$
DECLARE 
  result RECORD;
BEGIN
  IF itemId > 0 THEN
    SELECT 'purchase successful', NULL INTO result;
  ELSE
    SELECT NULL, 'purchase failed' INTO INTO result;
  END IF;
  RETURN result;
END;
$$ LANGUAGE plpgsql;

此处有更多返回记录的示例:Return multiple fields as a record in PostgreSQL with PL/pgSQL