Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.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 返回元组并检查null_Postgresql_Stored Procedures_Types_Plpgsql_Postgresql 9.2 - Fatal编程技术网

Postgresql 返回元组并检查null

Postgresql 返回元组并检查null,postgresql,stored-procedures,types,plpgsql,postgresql-9.2,Postgresql,Stored Procedures,Types,Plpgsql,Postgresql 9.2,我有一个函数: CREATE OR REPLACE FUNCTION my_function(user_id BIGINT) RETURNS BIGINT AS $BODY$ DECLARE var1 ???; --- ??? BEGIN --1 var1 := (SELECT table1.field1, table2.field2 FROM table1 INNER JOIN table2 -- ...... ); --2 --if var

我有一个函数:

CREATE OR REPLACE FUNCTION my_function(user_id BIGINT) RETURNS BIGINT AS
$BODY$
DECLARE
  var1 ???; --- ???

BEGIN
  --1
  var1 := (SELECT table1.field1, table2.field2
    FROM table1
    INNER JOIN table2
    -- ......
  );

  --2
  --if var1 is not null...
首先,我希望
var1
是一个元组。我必须创建一个像这样的类型我接受了吗

CREATE TYPE my_type ....
哪个有两个字段?或者有更好的办法解决这个问题

其次,我想确保
var1
不为null。如何做到这一点?

您可以选择或使用现有表的类型。然后使用
返回my_类型的集合

但对于一个行类型,您只需要在单个函数中使用它更方便-可能与以下组合使用:

在标签中搜索那些关键字。有很多例子

CREATE OR REPLACE FUNCTION my_function(user_id bigint)
  RETURNS TABLE(field1 int, field2 text) AS  -- replace with actual types!
$func$
BEGIN    
   RETURN TABLE
   SELECT t1.field1, t2.field2 -- table-qualify to avoid naming conflict
   FROM   table1 t1
   JOIN   table2 t2 ON ...
   ...  ;

   -- if var1 is not null ...
   IF NOT FOUND THEN
      -- If nothing was found, you can ...
      -- RAISE EXCEPTION 'foo!' -- to raise an exception. Or ...
      -- RETURN QUERY SELECT 1, 'foo'; -- return a "default" row ...
   END IF;
END
$func$ LANGUAGE plpgsql;