Skip site navigation (1) Skip section navigation (2)

Salut à tous, un problème avec mon petit code pl/pgsql

From: "met(at)n" <supermetan(at)yahoo(dot)fr>
To: pgsql-fr-generale(at)postgresql(dot)org
Subject: Salut à tous, un problème avec mon petit code pl/pgsql
Date: 2005-06-23 17:00:41
Message-ID: 20050623170041.19928.qmail@web42008.mail.yahoo.com (view raw or flat)
Thread:
Lists: pgsql-fr-generale
 
  Salut à tous, j'ai écris un petit code pl/pgsql qui
 ne fonctionne pas de façon catholique!
  A vous qui, a vu d'oeil savez détecter une erreur,
 voici le code et le problème.
 
 La premiere fonction (gov_only()) est booléenne, et
 renvoie TRUE si la ligne contenanant name_ existe
 dans
 la table, ou si elle n'existe pas et holder =
 government ou ministry.
 Dans le cas contraire , renvoie FALSE.
 
 La 2 ème fonction utilise la première. Elle permet
 de
 passer à la création d'un domaine(un trigger
 exécutera
 cette fonction à chaque insertion de domaines), si
 la
 1 ère est TRUE, sinon on ne pourra créer le domaine
 en
 question (Execption).
 
 Merci de voir si un problème de syntaxe
 cloche.Urgent.
 
 --Suitable for condition column of Reserved_words.
 --Indded, for each reserved word added, its
 associated
 functions
 --action and condition have to be written by the
 registry.
 --Set conditon to true if the holder the government,
 else, set it 
 --to false.
 CREATE OR REPLACE FUNCTION gov_only(TEXT, TEXT)
 RETURNS BOOLEAN
    AS 'DECLARE 
          name_ ALIAS FOR $1;
 	 holder ALIAS FOR $2;
 	 isrow RECORD;
        BEGIN
          --checks that the row containing name_
 really
 exists
 	 SELECT INTO isrow * FROM Reserved_words WHERE name
 =
 name_;
 	 IF NOT FOUND THEN
 	    RETURN TRUE;
 	 ELSE 
 	    IF (holder = ''government'') OR (holder =
 ''ministry'') THEN
 	       RETURN TRUE;	    
 	    ELSE 
 	       RETURN FALSE;
 	    END IF;
 	 END IF;   
        END;'
    LANGUAGE PLPGSQL;
 
 --Suitable for the ''action'' corresponding to
 gov_only function;
 --Specifies what to do with the state of
 ''condition''.
 CREATE OR REPLACE FUNCTION  create_gov_only()
 RETURNS
 TRIGGER
    AS 'DECLARE
         action_ TEXT; 
         condition_ TEXT;
 	name_ TEXT;
 	isrow RECORD;
        BEGIN
          name_ = ''defense.example''; 
 	 condition_ = ''gov_only'';
 	 action_ = ''create_gov_only'';
 	 SELECT  INTO isrow * FROM Reserved_words WHERE
 ((name = name_) AND (action = action_) AND
 (condition
 = condition_));
 	 IF ( FOUND ) AND (NEW.name = name_) THEN
 	    IF (gov_only(name_, ''ministry'') = FALSE) AND
 (gov_only(name_,''government'') = FALSE) THEN
 	       RAISE EXCEPTION '' This word (%) is reserved
 for government only, You have No authorization to
 create it.'', name_;	    
 	    ELSE 
 	       RETURN NEW
 	    END IF;
 	 END IF;
        END;'
    LANGUAGE PLPGSQL;
 




	

	
		
___________________________________________________________________________ 
Appel audio GRATUIT partout dans le monde avec le nouveau Yahoo! Messenger 
Téléchargez cette version sur http://fr.messenger.yahoo.com

Responses

pgsql-fr-generale by date

Next:From: Stéphane SchildknechtDate: 2005-06-24 08:33:26
Subject: Re: Salut à tous, un
Previous:From: Daniel VeriteDate: 2005-06-21 14:36:32
Subject: Re: problème de

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group