Appel de fonction dans une requête

cs_err1 Messages postés 2 Date d'inscription mercredi 12 avril 2006 Statut Membre Dernière intervention 25 juillet 2008 - 25 juil. 2008 à 15:49
cs_err1 Messages postés 2 Date d'inscription mercredi 12 avril 2006 Statut Membre Dernière intervention 25 juillet 2008 - 25 juil. 2008 à 15:58
Bonjour, (ici, ça rime avec au secours !)
Voilà : J'ai un petit problème en C#... (via VS2008) : je souhaite insérer une ligne dans une table !
Le hic c'est que dans mon ordre d'insert, je fais appel à une fonction... et le VS, outre le fait de me dire qu'il y a certainement une erreur dans mon code, transforme ma requête au dernier moment... ce qui fait planter le tout...

Voici ma requête :
INSERT INTO MA_TABLE (SOCIETE_KEY, PROJET_KEY, NUM_TABLE_REF, NOM_TABLE, LIBELLE)
VALUES     (:SOCIETE_KEY, :PROJET_KEY, utils.GetNewId('MA_TABLE'), :NOM_TABLE, :LIBELLE)

on ne peut plus basic : la fonction GetNewId('x'), vous l'aurez compris, allant chercher un nouvel ID pour la table x...

Je reçois l'erreur : "ORA-01036: numéro/nom de variable interdit"...

J'ai trouvé une solution qui ne me satisfait pas, c'est d'ajouter une colonne tampon dans laquelle je peux renseigner le nom de la table. Dans ce cas la commande devient :
INSERT INTO MA_TABLE (SOCIETE_KEY, PROJET_KEY, NUM_TABLE_REF, NOM_TABLE, LIBELLE)

VALUES     (:SOCIETE_KEY, :PROJET_KEY, utils.GetNewId(:NOM_DE_MA_TABLE), :NOM_TABLE, :LIBELLE);

Mais cela me semble aberrant de ne pas pouvoir appeler une fonction en lui passant un paramètre autrement que via la dataGridView.

Bon je ne sais pas si j'ai été clair, c'est vendredi et ça commence à tirer...
Merci de votre aide !!
err1

1 réponse

cs_err1 Messages postés 2 Date d'inscription mercredi 12 avril 2006 Statut Membre Dernière intervention 25 juillet 2008
25 juil. 2008 à 15:58
Bon,
j'ai oublié une autre solution aussi qui était de parser avant chaque Update les nouvelles lignes. Puis pour chacune de récupérer le dernier ID et de la mettre dans la colonne qui correspond...
Possible, moins "sale" que la solution précédente, mais très frustrant tout de même...
err1
0
Rejoignez-nous