Vous n'êtes pas identifié(e).
Pages : 1
Bonjour, voila ce que j'aimerai que la fonctions fasse.
create or replace function comptageLignes(nomtable varchar) returns integer AS $$
DECLARE
nombreLignes integer;
BEGIN
PERFORM (EXECUTE 'SELECT COUNT(*) FROM ' || $1);
if (FOUND is false) then
return false;
else
EXECUTE 'SELECT COUNT(*) FROM ' || $1 INTO nombreLignes;
return nombreLignes;
end if;
END;
$$ language PLPGSQL;
Cela dit la ligne avec le PERFORM et le EXECUTE n'est pas faisable et me renvoie une erreur.
Il y aurait un autre equivalent correct à cette ligne ?
Merci d'avance
Select count(*) into
Bonsoir, donc supposons que je souhaite faire une fonction qui vérifie uniquement l'existance d'une table, avec son nom passé en paramètre.
(sans prendre en compte les contraintes ou complication ou nombre de ligne trop élevé)
Cela donnerai :
create or replace function verifExistTable (varchar) returns integer AS $$
DECLARE
nombreLignes integer;
BEGIN
/*que dois je mettre ici ?*/
END;
$$ language PLPGSQL;
requete que je tape :
select comptageLignes('Bookbay.auteurs');
Dois je utiliser : reltuples float4 ?
Merci d'avance
En fait ce que j'aimerai faire ca serait ca :
create or replace function comptageLignes(nomtable varchar) returns integer AS $$
DECLARE
nombreLignes integer;
BEGIN
IF EXISTS (execute 'SELECT COUNT(*) FROM ' || $1) THEN
execute 'SELECT COUNT(*) FROM ' || $1 INTO nombreLignes;
return nombreLignes;
else
return 0;
end if;
END;
$$ language PLPGSQL;
Donc je voudrais tester l'existence de la table dans le IF, si elle existe afficher le nombre de lignes dans la table, dans le cas contraire retourner 0
Ce que j'ai en affichage : ERREUR: erreur de syntaxe sur ou près de « execute »
LIGNE 47 : IF EXISTS (execute 'SELECT COUNT(*) FROM ' || $1) THEN
Bonjour, je cherche a creer une fonction qui prends en paramètre un nom de table et qui vérifie si la table existe bien, dans le cas ou elle existe, affiche le nombre de ligne de la table.
Voici le code que j'ai pour l'instant :
create or replace function comptageLignes(varchar) returns integer AS $$
DECLARE
nombreLignes integer;
BEGIN
//Passage qui doit verifier si la table existe, si non retourner 0 ou un message d'erreur.
.....
......
//Ensuite le cas ou la table existe :
EXECUTE 'SELECT COUNT(*) FROM ' || $1 INTO nombreLignes;
RETURN nombreLignes;
END;
$$ language PLPGSQL;
Je ne parviens pas à vérifier l'existance de la table puisque le nom de la table est passé en paramètre donc je dois forcément utiliser un EXECUTE mais impossible d'utiliser EXECUTE avec un IF ou un PERFORM.
Merci d'avance pour vos réponses
Pages : 1