2017-05-16 4 views
0

Essayer de créer une fonction qui donne le nom d'une table va créer une fonction avec le nom de la table concaténé à _myViewSql créer une vue X_myview où X est donnée en fonction (texte X) qui crée la vue

Par exemple, si le nom de la table est étudiants, la fonction créera une vue intitulée students_myView

Voici ce que j'ai jusqu'à présent.

create or replace function skyline_naive(tableName text) 
as $$ 
declare 
name text; 

begin 
name:= $1; 
create or replace view name_myView as select * from name; 

end 
$$ language plpgsql; 

Répondre

0

Une commande dynamique plpgsql doit être exécuté en tant que chaîne EXECUTE déclaration.

Pour le faire fonctionner, vous devez l'écrire comme ceci:

create or replace function skyline_naive(tableName text) 
    returns void as $$ 
begin 
    execute format('create or replace view %1$s_myView as select * from %1$s;', tableName) 
    return; 
end; 
$$ language 
    plpgsql;