PostgreSQL
La base de données la plus sophistiquée au monde.

Ouverture de session

Navigation

Contactez-nous

Administration du site :
"equipe chez postgresqlfr point org"

Contact presse :
"fr chez postgresql point org"

Contact association :
"bureau chez postgresqlfr point org"

Questions PostgreSQL :
 IRC :
  serveur irc.freenode.net
  canal #postgresqlfr

Recherche

Accéder aux archives

« Octobre 2008  
Lun Mar Mer Jeu Ven Sam Dim
  2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31  

Syndication

Flux XML

Sondage

Quelle est la version de PostgreSQL la plus répandue sur vos serveurs ?
8.3
10%
8.2
42%
8.1
40%
8.0
2%
7.4
6%
7.3 ou antérieure
0%
Nombre de votes: 48

Création d'une fonction pour creer dynamiquement une requête SQL

Technique - Langages Procéduraux (PL) | Création d'une fonction pour creer dynamiquement une requête SQL

Par torterat le 20/03/2005 - 17:48

Bonsoir

Je suis en train de migrer une base Oracle en PostgreSQL, je n'arrive pas a créer une fonction qui ressemble a celle ci:

CREATE OR REPLACE FUNCTION get_row_count(text) RETURNS int8 AS
$$
BEGIN
SELECT count(*) FROM $1;
END;
$$
LANGUAGE 'plpgsql' VOLATILE;
select get_row_count('TEST');
ERROR: syntax error at or near "$1" at character 24
QUERY: SELECT count(*) FROM $1
CONTEXT: PL/pgSQL function "get_row_count" line 2 at SQL statement

Alors que si je fais le test IF ($1 = 'TEST') THEN... le prédicat est correct.

Merci de votre aide

Salutations

Joel

Options d'affichage des commentaires

Sélectionnez la méthode d'affichage des commentaires que vous préférez, puis cliquez sur "Sauvegarder les paramètres" pour activer vos changements.

Exécution de SQL Dynamique dans pl/pgsql

Jean-Paul Argudo/ = 21 Mars, 2005 - 13:07

Bonjour,

Pour faire ce genre de manipulations, il existe deux méthodes, comme c'est spécifié dans la documentation :


35.6.5. Executing Dynamic Commands

Je préfère la deuxième méthode pour ma part, voilà ce que ça donne :

create table plouf (a integer);
insert into plouf values (1);
insert into plouf values (2);
insert into plouf values (3);
insert into plouf values (4);

CREATE FUNCTION get_row_count(varchar) RETURNS integer AS $$
DECLARE
curs1 refcursor;
resultat integer;
BEGIN
OPEN curs1 FOR execute 'SELECT Count(*) FROM ' || quote_ident($1);
FETCH curs1 INTO resultat;
close curs1;
RETURN resultat;
END;
$$ LANGUAGE plpgsql;

select * from get_row_count('plouf');

get_row_count
---------------
4
(1 ligne)

Pour les explications, tout est dans la doc...

--

Jean-Paul ARGUDO

www.PostgreSQLFr.org


Utilisation de DBLink

torterat/ = 18 Mai, 2005 - 14:35

Je tente en vain d'utiliser la fonction DBLink pour lire des donnees sur une base de donnee distante.

J'ai une base "test" avec un schema "supervision" qui contient une table "sup_test".

A partir d'un autre sgbd Postgres vu sur le reseau je lance la requete suivante:

select dblink('hostaddr=194.2.47.124 port=5432 dbname=test
user=postgres password=rootroot','select * from supervision.sup_test');

194.2.47.124 = @IP de la machine distante

Je recupere l'erreur suivante:

ERROR: could not establish connection
DETAIL: could not connect to server: Connection timed out (0x0000274C/10060)
Is the server running on host "194.2.47.124" and accepting
TCP/IP connections on port 5432?

Je suis sec : me manque t-il une option dans l'installation (j'ai coche le module de contribution de part et d'autre lors de l'installation), j'ai fait les "grant" des users pour les bases et les schema...

Merci de votre aide

Joel


© PostgreSQLFr, tous droits réservés.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.