如何检查查询中没有数据选择

时间:2018-02-20 09:39:36

标签: postgresql sqlcode

我正在使用查询来选择函数中的某些数据但是如果我没有从中获取数据,我需要运行不同的查询。 我现在该怎么做:

SELECT 1 INTO flag
          FROM   "schema"."table"
          WHERE col1 = variable
        FETCH FIRST 1 ROW ONLY;
if(flag = 1) then
  SELECT    "col1"                                             
            INTO    col1_2
            FROM    "schema"."table"                                                
          WHERE col1 = variable;
end if;

但是这使我的功能变得太复杂了,因为我必须多次运行这个部分,因为我有很多这样的条件和查询。

我有什么方法可以使用sqlcode,因为我知道sqlcode成功运行查询,返回没有行是100.这样的事情:

SELECT    "col1"                                             
                INTO    col1_2
                FROM    "schema"."table"                                                
              WHERE col1 = variable;
if(SQLCODE=100)
   --run next set of queries
end if;

1 个答案:

答案 0 :(得分:1)

您可以使用特殊变量FOUND

SELECT ... INTO col1_2 ...
IF NOT FOUND THEN
   ...
END IF;

或者,如果查询没有返回任何行,则可以依赖变量为NULL的事实:

SELECT .. INTO col1_2 ...
IF col1_2 IS NULL THEN
   ...
END IF;

第二种方法不太好;它只有在返回的值不能为空值时才有效。