PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Връщане на заявка от функция?

CREATE OR REPLACE FUNCTION get_names(_tname varchar)
  RETURNS TABLE (col_a integer, col_b text) AS
$func$
BEGIN
   RETURN QUERY
   SELECT t.col_a, t.col_b  -- must match RETURNS TABLE
   FROM   mytable t
   WHERE  t.name = _tname;    
END
$func$  LANGUAGE plpgsql;

Обадете се така:

SELECT * FROM get_names('name')

Основни точки:

  • Използвайте RETURNS TABLE , така че не е нужно да предоставяте списък с имена на колони при всяко повикване.

  • Използвайте RETURN QUERY , много по-просто.

  • Квалифицирайте имената на колони в таблицата, за да избегнете конфликти в имената с идентично име OUT параметри (включително колони, декларирани с RETURNS TABLE ).

  • Използвайте именувана променлива вместо ALIAS . По-просто, правите същото и това е предпочитаният начин.

  • Проста функция като тази може да бъде написана и на LANGUAGE sql :

CREATE OR REPLACE FUNCTION get_names(_tname varchar)
  RETURNS TABLE (col_a integer, col_b text) AS
$func$
SELECT t.col_a, t.col_b  --, more columns - must match RETURNS above
FROM   mytable t
WHERE  t.name = $1;
$func$ LANGUAGE sql;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL връща набор от резултати като JSON масив?

  2. Как да създадете потребител с привилегии на суперпотребител в PostgreSQL

  3. Изцяло игнориране на часовите зони в Rails и PostgreSQL

  4. Свържете приложението iPhone към PostgreSQL с помощта на Libpq

  5. Как да изчислим медиана в PostgreSQL