запрос postgresql - PullRequest
       5

запрос postgresql

0 голосов
/ 25 мая 2011

У меня есть таблица с одним столбцом (t1date) как:

Table1

t1date  
----------  
2011-05-24

Также есть функция, которая принимает один параметр dfunction(fdate).Я хочу передать значение t1date в функцию.Что-то вроде:

SELECT * 
  FROM dfunction(SELECT t1date 
                   FROM Table1 
               ORDER BY t1date 
                  LIMIT 1)

, что эквивалентно

SELECT * 
  FROM dfunction('2011-05-24')

Я не хочу писать другую функцию для этого.То, что я ищу, это использовать оператор выбора.Является ли это возможным?Если да, то как.

Ответы [ 3 ]

3 голосов
/ 25 мая 2011
select dfunction(t1date) from Table1 order by t1date asc limit 1;
1 голос
/ 25 мая 2011

Насколько я понимаю, подзапрос при использовании в качестве скалярного выражения должен быть заключен в скобки.Итак, как насчет этого:

SELECT * 
FROM dfunction(
   (SELECT t1date 
      FROM Table1 
  ORDER BY t1date 
     LIMIT 1)
)
0 голосов
/ 25 мая 2011

Мне трудно понять, что именно вы хотите.У меня есть несколько вариантов, возможно, вы можете объяснить больше, если ни один из них не является тем, что вы хотите?

create table foo1 ( t1 date, id int );
insert into foo1 values ('2001-01-01', 1), ('2002-01-01', 2),  ('2003-01-01', 3),  ('2004-01-01', 4);

create or replace function foo1(date) returns setof foo1 as $$ select * from foo1 where $1 > t1 order by t1 asc; $$ language 'sql';
select * from foo1('2002-02-02');

create or replace function foo2(text) RETURNS SETOF foo1 as $$
DECLARE
 q alias for $1;
 r foo1%rowtype;
BEGIN
 for r in execute q loop
  return next r;
 end loop;
 return;
END;
$$ language 'plpgsql';
select * from foo2('select * from foo1 order by t1 asc limit 1');
drop table foo1 cascade;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...