2013-09-06 22 views
6

Tanımladığım bir işlevden aşağıdaki komutu çalıştırdığımda, "SELECT ... INTO uygulanmıyor" hatası alıyorum. Bu, özel komutun izinli olmadığı anlamına mı geliyor (örn. "SELECT ... INTO")? Yoksa sadece yanlış bir şey yaptığımı mı kastediyor? Hatanın neden olduğu gerçek kod aşağıdadır. Cevabım zaten buradaysa özür dilerim, ancak bu özel hatayı göremedim ve bulamadım. ben INTOPostgreSQL HATA: SELECT ... INTO EXOTEZ uygulanmadı

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; 

cevap

7

8.4.7 çalıştırıyorum değer ne olursa olsun için şimdiden teşekkür ederiz ... Bu kullanım durumunda belirsiz ve sonra orada yasaktır.

Yerine CREATE TABLO AS SELECT kullanabilirsiniz.

 
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

Bu kesinlikle yaptı. Bir kediyi ciltlemenin birden fazla yolu var! Bunu işaret ettiğin için teşekkürler. :-) –