2013-09-06 9 views
6

Quando eseguo il seguente comando da una funzione definita, viene visualizzato l'errore "EXECUTE di SELECT ... INTO non è implementato". Significa che il comando specifico non è consentito (ad esempio "SELECT ... INTO")? O significa solo che sto facendo qualcosa di sbagliato? Il codice effettivo che causa l'errore è sotto. Mi scuso se la risposta è già qui, tuttavia ho guardato e non ho trovato questo errore specifico. Grazie in anticipo ... Per che cosa vale la pena Io corro 8.4.7ERRORE PostgreSQL: EXECUTE di SELECT ... INTO non è implementato

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; 

risposta

7

INTO è ambiguo in questo caso d'uso e quindi è vietato lì.

È possibile utilizzare invece 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

Che sicuramente l'ha fatto. C'è più di un modo per scuoiare un gatto! Grazie per la segnalazione. :-) –

Problemi correlati