Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2635 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [PGSQL/C] Programmation serveur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PGSQL/C] Programmation serveur

n°1023154
Moktar1er
No one replies...
Posté le 24-03-2005 à 11:37:06  profilanswer
 

Bon, je crée un topic car les questions commencent à se cumuler...
Voilà celle du moment:
J'ai une VIEW, sur laquelle je déclare une RULE.
Dans cette dernière, j'aimerai appeller une fonction C, en lui passant le NEW en paramètre afin de faire 2,3 vérifications. Comment je le déclare ce paramètre? (coté C et coté SQL lors du CREATE FUNCTION)

mood
Publicité
Posté le 24-03-2005 à 11:37:06  profilanswer
 

n°1024468
Moktar1er
No one replies...
Posté le 25-03-2005 à 09:56:38  profilanswer
 

Toujours pas d'amateurs?

n°1024740
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 25-03-2005 à 13:28:43  profilanswer
 

bon, d'après ce que tu disais, le NEW est de type RECORD. je te conseillerais bien un truc genre void* mais ça risque de faire désordre :D
sinon, pourquoi tu ne fais pas tes vérifications dans un trigger ?


---------------
J'ai un string dans l'array (Paris Hilton)
n°1024748
Moktar1er
No one replies...
Posté le 25-03-2005 à 13:39:33  profilanswer
 

Parceque je bosse sur des vues et que les triggers sur les vues ça ne passe pas [:itm]
De mon coté j'avance: la fonction C je la déclare au format V1 (paramètres PG_FUNCTION_ARGS) pour avoir la paix (après on verra pour récupérer ce qu'il faut à grands coups de ciseaux). Coté SQL je déclare la fonction du type "CREATE FONCTION mafonction(mavue) ..." (mavue étant le nom de la vue dont la règle appelle ma fonction).
Donc ça compile, ça s'intalle, mais quand je fais un INSERT dans ma vue il me crache


ERREUR:  Impossible de gérer une référence sur une ligne entière  


[:sisicaivrai]

n°1024749
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 25-03-2005 à 13:49:41  profilanswer
 

Moktar1er a écrit :

Parceque je bosse sur des vues et que les triggers sur les vues ça ne passe pas [:itm]


 
ah oui merde, faudrait que je lise les topics en entier moi :whistle:
 

Moktar1er a écrit :


De mon coté j'avance: la fonction C je la déclare au format V1 (paramètres PG_FUNCTION_ARGS) pour avoir la paix (après on verra pour récupérer ce qu'il faut à grands coups de ciseaux). Coté SQL je déclare la fonction du type "CREATE FONCTION mafonction(mavue) ..." (mavue étant le nom de la vue dont la règle appelle ma fonction).
Donc ça compile, ça s'intalle, mais quand je fais un INSERT dans ma vue il me crache


ERREUR:  Impossible de gérer une référence sur une ligne entière  


[:sisicaivrai]


ta RULE est correcte, t'as bien fait un truc genre


CREATE RULE theRule AS ON INSERT TO theView DO INSTEAD INSERT INTO table....


?
 
 


---------------
J'ai un string dans l'array (Paris Hilton)
n°1024769
Moktar1er
No one replies...
Posté le 25-03-2005 à 14:03:20  profilanswer
 

j'ai précisement fait:


CREATE myView AS SELECT * FROM maTable;
CREATE FUNCTION myFunction(myView) AS 'lib.so' LANGUAGE C;
CREATE RULE myRule AS ON INSERT TO myView DO INSTEAD SELECT myFunction(NEW);


n°1024783
Moktar1er
No one replies...
Posté le 25-03-2005 à 14:13:26  profilanswer
 

bon, pour déconner comme ça j'avais déclaré


CREATE FUNCTION myFunction(integer) AS 'lib.so' LANGUAGE C;
CREATE RULE myRule AS ON INSERT TO myView DO INSTEAD SELECT myFunction(NEW);


et il me répond


ERREUR:  La fonction myfunction(myview) n'existe pas
HINT:  Aucune fonction ne correspond au nom donné et aux types d'arguments. Vous devez ajouter des conversions explicites de type.explicit type casts.


Comme quoi il attend bien un paramètre de type myView pour passer NEW...
(notez au passage le magnifique travail de conversion anglais->français des messages d'erreur)

n°1024801
Moktar1er
No one replies...
Posté le 25-03-2005 à 14:32:11  profilanswer
 

ERREUR:  Impossible de gérer une référence sur une ligne entière


Ca veut dire quoi d'abord ça? Qu'il ne sait pas passer un tuple en paramètres? C'est même pas clair leurs erreurs [:sisicaivrai]

n°1025135
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 25-03-2005 à 17:42:33  profilanswer
 

Moktar1er a écrit :

ERREUR:  Impossible de gérer une référence sur une ligne entière


Ca veut dire quoi d'abord ça? Qu'il ne sait pas passer un tuple en paramètres? C'est même pas clair leurs erreurs [:sisicaivrai]


ben ça me parait clair :/
effectivement on dirait qu'il a du mal avec le NEW en paramètre.
et ta vue ? je suppose qu'elle est constituée d'un SELECT. donc tu peux éventuellement poser un trigger sur la table d'origine (si toutefois c'est une table unique et pas une UNION/Jointure, sinon bonjour la galère :/)


---------------
J'ai un string dans l'array (Paris Hilton)
n°1025225
Moktar1er
No one replies...
Posté le 25-03-2005 à 19:22:31  profilanswer
 

c'est pire que tout ce que tu peux imaginer...

mood
Publicité
Posté le 25-03-2005 à 19:22:31  profilanswer
 

n°1028087
Moktar1er
No one replies...
Posté le 29-03-2005 à 10:33:21  profilanswer
 

up au cas où...

n°1028205
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 29-03-2005 à 12:37:37  profilanswer
 

:spamafote:


---------------
J'ai un string dans l'array (Paris Hilton)
n°1028682
Moktar1er
No one replies...
Posté le 29-03-2005 à 16:44:36  profilanswer
 

bon, manifestement, vu qu'a priori il a l'air de se moquer complètement du type que je lui passe en paramètre lors de la déclaration de la fonction en SQL, je suppute que le problème vienne du passage de NEW...
quelqu'un a t'il une idée sur comment passer une ligne en paramètre? (je sens déjà venir les vannes sur ligne->coke->paille)

n°1036182
Moktar1er
No one replies...
Posté le 05-04-2005 à 17:38:25  profilanswer
 

alors les gens? hein? bah quoi? je suis le seul au monde à me poser ces questions là???
plus simplement:
comment je fais pour passer en paramètre, au moment de l'appel, une ligne (genre le resultat d'un select)?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [PGSQL/C] Programmation serveur

 

Sujets relatifs
[Programmation Korn Shell] - Création d'une bibliothèque de fonctionsprogramme avec une DB mais sans serveur DB
[T-SQL] Création de base sur serveur distantProgrammation en C - Suppression de caractère
Algorithmique programmation cprogrammation d'interruption sous assembleur
Programmation d'un programme de détection d'attaque réseauChat sur serveur web local
Programmation permettant de récupérer les données d'un formulaire.Programmation sur pocket pc et dialogue sur un réseau
Plus de sujets relatifs à : [PGSQL/C] Programmation serveur


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR