2013-09-06 1 views
6

Когда я запускаю следующую команду из определенной мной функции, я получаю ошибку «EXECUTE of SELECT ... INTO не реализован». Означает ли это, что конкретная команда не разрешена (т. Е. «SELECT ... INTO»)? Или это просто означает, что я делаю что-то неправильно? Фактический код, вызывающий ошибку, приведен ниже. Я прошу прощения, если ответ уже здесь, однако я посмотрел и не смог найти эту конкретную ошибку. Заранее спасибо ... За то, что это стоит я бегу 8.4.7PostgreSQL ERROR: EXECUTE из SELECT ... INTO не реализовано

vCommand = 'select ' || stmt.column_name || ' as id ' || 
      ', count(*) as nCount 
      INTO tmpResults 
      from ' || stmt.table_name || ' 
      WHERE ' || stmt.column_name || ' IN (select distinct primary_id from anyTable 
               WHERE primary_id = ' || stmt.column_name || ') 
      group by ' || stmt.column_name || ';'; 
EXECUTE vCommand; 

ответ

7

INTO неоднозначен в этом прецеденте, а затем запрещено там.

Вместо этого вы можете использовать CREATE TABLE AS SELECT.

 
CREATE OR REPLACE FUNCTION public.f1(tablename character varying) 
RETURNS integer 
LANGUAGE plpgsql 
AS $function$ 
begin 
    execute 'create temp table xx on commit drop as select * from ' 
             || quote_ident(tablename); 
    return (select count(*) from xx); 
end; 
$function$ 

postgres=# select f1('omega'); 
f1 
──── 
    2 
(1 row) 
+0

Это определенно сделало это. Существует более одного способа кошки кошки! Спасибо что подметил это. :-) –

Смежные вопросы