[Oracle][Pro*C] Requetes de base

Requetes de base [Oracle][Pro*C] - SQL/NoSQL - Programmation

Marsh Posté le 28-02-2003 à 20:42:05    

J'ai écrit un prog en pro*c, malheureusement je n'arrive pas à faire fonctionner la moitié des trucs.
 
par exemple :  
 

Code :
  1. int supprimer_client()
  2. {
  3. int numcli;
  4. printf("Numéro du client à supprimer : " );
  5. scanf("%d",&numcli);
  6. EXEC SQL DELETE FROM Client WHERE NoClient=:numcli;
  7. EXEC SQL COMMIT;
  8. printf ("\nVous avez effacé le client numéro %d \n",numcli);
  9. }


 
ne fonctionne pas, lorsque je teste, après que j'aie rentré le n° du client à effacer, rien ne se passe (et on ne peut même pas quitter), et il n'est pas effacé de la base :(
 
 
pareil pour :

Code :
  1. int modifier_annonce()
  2. {
  3. int numann;
  4. printf("Numéro de l'annonce dont le descriptif est à modifier : " );
  5. scanf("%d",&numann);
  6. printf("\nEntrer le nouveau descriptif :\n" );
  7. asks("",descr);
  8. EXEC SQL UPDATE Annonce
  9.  SET Descriptif = :descr
  10.  WHERE NoAnnonce = :numann;
  11. }


 
J'ai cherché des exemples sur le net et dans des bouquins, et c'est apparement exactement la même chose que j'ai faite, pourtant chez moi ca ne marche pas  :sweat: , je ne vois pas ce qui cloche...
(bon, il faut dire que je suis une merde en C, je n'en ai jamais fait)
 
Merci d'avance  :hello:


Message édité par djlemon le 28-02-2003 à 20:44:28

---------------
*Neptunes laced the beat like one of the best* | Noreaga - Oh No | Méga-Bonnes-Affaires.com
Reply

Marsh Posté le 28-02-2003 à 20:42:05   

Reply

Marsh Posté le 28-02-2003 à 22:56:18    

J'y connais rien mais ca me parait bizarre qu'il y ait la requête SQL directement dans le code c :??:

Reply

Marsh Posté le 28-02-2003 à 23:02:20    

mrBebert a écrit :

J'y connais rien mais ca me parait bizarre qu'il y ait la requête SQL directement dans le code c :??:  


ben c'est le principe du ProC  :D  
t'as un preprocesseur qui te fait un gros code C incomprehensible.

Reply

Marsh Posté le 28-02-2003 à 23:15:58    

gloop a écrit :


ben c'est le principe du ProC  :D  
t'as un preprocesseur qui te fait un gros code C incomprehensible.

Ca à l'ai simple, élégant et facile à maintenir ce truc :whistle:

Reply

Marsh Posté le 01-03-2003 à 12:26:00    

mrBebert a écrit :

Ca à l'ai simple, élégant et facile à maintenir ce truc :whistle:  


 
.. c'est ca qui est génial [:dawa], surtout lorsque on a jamais rien programmé en C, et qu'on a fait un seul TP de SQL
 
 :sweat:


---------------
*Neptunes laced the beat like one of the best* | Noreaga - Oh No | Méga-Bonnes-Affaires.com
Reply

Marsh Posté le 01-03-2003 à 20:33:43    

djlemon a écrit :

.. c'est ca qui est génial [:dawa], surtout lorsque on a jamais rien programmé en C, et qu'on a fait un seul TP de SQL
 :sweat:

C'est sur qu'en ne sachant ni faire du C, ni du SQL, il est tentant de directement mélanger les 2 :pt1cable:

Reply

Marsh Posté le 02-03-2003 à 21:26:57    

mrBebert a écrit :

C'est sur qu'en ne sachant ni faire du C, ni du SQL, il est tentant de directement mélanger les 2 :pt1cable:  


 
[3615 My Life]
Là où je suis, l'apprentissage du langage C a été supprimé en DEUG MIAS, mais bien sûr lorsqu'on arrive en License Info, on est sensé savoir parfaitement programmer en C, vu que là, le programme n'a pas changé.
C'est super logique quoi...  :sarcastic:  :sweat:  
[/3615 My Life]


---------------
*Neptunes laced the beat like one of the best* | Noreaga - Oh No | Méga-Bonnes-Affaires.com
Reply

Marsh Posté le 02-03-2003 à 23:39:10    

Si çà fait rien, et que çà sort pas, une possibilité, c'est un lock.
 
T'aurais pas un autre process en maj sur le même record.
Par exemple un update dans une fenêtre SQLPLUS sans commit.
 
Vérifie avec un outil du genre toad.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 02-03-2003 à 23:49:48    

djlemon a écrit :


 
[3615 My Life]
Là où je suis, l'apprentissage du langage C a été supprimé en DEUG MIAS, mais bien sûr lorsqu'on arrive en License Info, on est sensé savoir parfaitement programmer en C, vu que là, le programme n'a pas changé.
C'est super logique quoi...  :sarcastic:  :sweat:  
[/3615 My Life]

déjà que le deug est merdique, si tu fais pas de C,c 'est la merde.

Reply

Marsh Posté le 03-03-2003 à 16:55:50    

Mara's dad a écrit :

Si çà fait rien, et que çà sort pas, une possibilité, c'est un lock.
 
T'aurais pas un autre process en maj sur le même record.
Par exemple un update dans une fenêtre SQLPLUS sans commit.
 
Vérifie avec un outil du genre toad.


 
Non non, je ne pense pas que cela soit locké, vu que je fais 1 seul truc en même temps.
 
De +, il y a certaines reqûetes qui fonctionnent, par exemple ajouter un client


---------------
*Neptunes laced the beat like one of the best* | Noreaga - Oh No | Méga-Bonnes-Affaires.com
Reply

Marsh Posté le 03-03-2003 à 16:55:50   

Reply

Marsh Posté le 03-03-2003 à 17:04:42    

Ben 'Ajouter', c'est sûr que t'aurras pas de lock. Mais en modif ou en suppression, faut voir...
 
M'enfin c'que j'en dis..
 
Le PRO*C, j'ai essayé, pi j'ai laissé tomber.
Trop chiant et incompréhensible pour faire des requêtes dynamiques. Alors, j'ai fait de l'OCI, et là j'en ai bien bavé.
J'ai pas tout compris ce que j'ai écris, mais çà marche :pt1cable:


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 03-03-2003 à 17:34:18    

oui mais moi c'est pour un projet, et on est obligés d'utiliser du pro*c
 
Pis là je viens d'essayer d'écrire mes reqûetes d'une nouvelle manière, et ca à l'air de marcher
 
Il faut en fait déclarer les entiers que l'on veut saisir (n° client par exple) en VARCHAR dans la section de déclaration SQL  :heink:  :heink:  
 
C'est n'importe quoi, mais ca marche  :pt1cable:


---------------
*Neptunes laced the beat like one of the best* | Noreaga - Oh No | Méga-Bonnes-Affaires.com
Reply

Marsh Posté le 04-03-2003 à 13:59:14    

Ouais, ben en fait c'est compréhensible, vu qu'il n'y a pas de correspondance entre les TYPES c est ceux d'Oracle.
 
Je n'ai ni le temps ( ni vraiement l'envie en fait :) ) de me replonger dans la doc pro*c, mais çà doit bien être expliqué quelque-part.
 
Genre pour être strict, écrire une requête du style
 
EXEC SQL DELETE FROM Client WHERE NoClient=to_number(:numcli);


Message édité par Mara's dad le 04-03-2003 à 13:59:32

---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed