查询没有结果数据的目的地 - PostgreSQL

时间:2015-11-20 15:58:58

标签: sql postgresql stored-procedures

我在PostgreSQL中创建了以下存储过程:

CREATE OR REPLACE function incomingdel(IN del_ID varchar) RETURNS VOID AS $$
DECLARE xyz integer;
BEGIN
  SELECT * INTO xyz FROM incomingcheck(cast(del_ID as integer));
  IF xyz <> 1
  THEN
      SELECT * INTO xyz FROM perfdel(cast(del_ID as integer));
  END IF;

END
$$ LANGUAGE plpgsql

即使函数返回VOID,我仍然会得到

Error: query has no destination for result data

当我执行该功能时。有人可以帮忙吗?

由于

1 个答案:

答案 0 :(得分:0)

当你在PL / pgSQL函数中执行SELECT * INTO ...时,你需要提供类型record的变量或行源的行类型,即使该函数只返回一个整数。函数incomingcheck(int)perfdel(int)显然会返回一个integer,在这种情况下,您可以简化您的功能:

CREATE FUNCTION incomingdel(del_ID integer) RETURNS VOID AS $$
DECLARE
  xyz integer;
BEGIN
  xyz := incomingcheck(del_ID);
  IF xyz <> 1 THEN
    xyz := perfdel(del_ID);
  END IF;
  -- Do something with xyz
END; $$ LANGUAGE plpgsql;

如果功能实际上在被调用函数中(因此您不处理xyz值),那么它仍然变得更简单:

CREATE FUNCTION incomingdel(del_ID integer) RETURNS VOID AS $$
BEGIN
  IF incomingcheck(del_ID) <> 1 THEN
    perfdel(del_ID);
  END IF;
END; $$ LANGUAGE plpgsql;