OVH Cloud OVH Cloud

[WD8] Erreur sql

3 réponses
Avatar
FabSteg
Bonjour,

Voila je "migre" la base d'un projet Windev de Oracle vers Hyperfile et je
me heurte à pas mal de petits ennuis dans le code.
Mon plus gros souci concerne les requêtes SQL en ce qui concerne les
insertion, sous Oracle une requête comme celle-ci ne pose pas de problèmes :
>> INSERT INTO FOURNISSEURS VALUES(65,'Livraison le matin aprés 10H',641254
,4,'P',0,0,0,0,0)

Mais sous hyperfile voila l'erreur : Problème d'initialisation de la requête
<gclRequêteSQL:M_REQUETESQL>. Mot VALUES inattendu

En fait je sais d'où vient l'erreur, pour régler le problème je devrait
préciser les colonnes et donc écrire ceci :

>> INSERT INTO FOURNISSEURS (CLE_FOURNISSEUR, OBSERVATION,
CLE_COORDONNEES_FOURNISSEUR, CODE_REGLEMENT, TYPE_FOURNISSEUR, ID_BANQUE,
CODE_BANQUE, CODE_GUICHET, CLE_RIB, N_COMPTE) VALUES(65,'Livraison le matin
aprés 10H',641254 ,4,'P',0,0,0,0,0)

Mais comme tout bon développeur je me doit d'être un tout petit peu fainéant
et donc je voudrais savoir si il n'y avait pas une solution de facilité
beaucoup plus rapide que la recopie de toutes les colonnes pour toutes les
requêtes SQL de mon programme (car dieux sait si elles sont nombreuses) !

Merci beaucoup

Fabsteg

3 réponses

Avatar
Manu
FabSteg wrote:
Bonjour,

Voila je "migre" la base d'un projet Windev de Oracle vers Hyperfile
et je me heurte à pas mal de petits ennuis dans le code.
Mon plus gros souci concerne les requêtes SQL en ce qui concerne les
insertion, sous Oracle une requête comme celle-ci ne pose pas de
problèmes : >> INSERT INTO FOURNISSEURS VALUES(65,'Livraison le
matin aprés 10H',641254 ,4,'P',0,0,0,0,0)



ERREUR ! il faut toujours nommer les colonnes dans lesquelles on fait un
insert. Imagine seulement que l'on rajoute une colonne (pas maintenant mais
dans 2 ans quand tu ne seras plus là) gros plantage, des heures pour
retrouver le toute petite requete qui merde alors que çà t'a fait gagner 10
minutes de dev !

Mais sous hyperfile voila l'erreur : Problème d'initialisation de la
requête <gclRequêteSQL:M_REQUETESQL>. Mot VALUES inattendu

En fait je sais d'où vient l'erreur, pour régler le problème je
devrait préciser les colonnes et donc écrire ceci :

>> INSERT INTO FOURNISSEURS (CLE_FOURNISSEUR, OBSERVATION,
CLE_COORDONNEES_FOURNISSEUR, CODE_REGLEMENT, TYPE_FOURNISSEUR,
ID_BANQUE, CODE_BANQUE, CODE_GUICHET, CLE_RIB, N_COMPTE)
VALUES(65,'Livraison le matin aprés 10H',641254 ,4,'P',0,0,0,0,0)



HF est moins permissif et c'est tant mieux.

Mais comme tout bon développeur je me doit d'être un tout petit peu
fainéant et donc je voudrais savoir si il n'y avait pas une solution



c'est une blague là ;-)

de facilité beaucoup plus rapide que la recopie de toutes les
colonnes pour toutes les requêtes SQL de mon programme (car dieux
sait si elles sont nombreuses) !



Pas de solution pour toi.

<prosélytisme>
Dans ces cas là je me dis "Que c'est bien d'utiliser SQLManagerX". Plus de
gestion de requete SQL :-) Merci Firetox
</prosélytisme>

--
Emmanuel
Avatar
FabSteg
"Manu" a écrit :
ERREUR ! il faut toujours nommer les colonnes dans lesquelles on fait un
insert. Imagine seulement que l'on rajoute une colonne (pas maintenant


mais
dans 2 ans quand tu ne seras plus là) gros plantage, des heures pour
retrouver le toute petite requete qui merde alors que çà t'a fait gagner


10
minutes de dev !



Bon ben tant pis pour moi, je n'ai plus qu'à reprendre toutes les colonnes
de chaque table dans chaque requête



FabSteg avait écrit auparavant :
> Mais comme tout bon développeur je me doit d'être un tout petit peu
> fainéant et donc je voudrais savoir si il n'y avait pas une solution



Et Manu lui à répondu :
c'est une blague là ;-)



En fait c'est mon prof de BTS qui nous disait ça tout les jours pour nous
expliquer qu'il fallait écrire le moins de code possible, et surtout écrire
du code pour éviter les moindres saisies.

Merci quand même
Avatar
Manu
FabSteg wrote:
"Manu" a écrit :
ERREUR ! il faut toujours nommer les colonnes dans lesquelles on
fait un insert. Imagine seulement que l'on rajoute une colonne (pas
maintenant mais dans 2 ans quand tu ne seras plus là) gros plantage,
des heures pour retrouver le toute petite requete qui merde alors
que çà t'a fait gagner 10 minutes de dev !



Bon ben tant pis pour moi, je n'ai plus qu'à reprendre toutes les
colonnes de chaque table dans chaque requête



En gros oui.

Mais comme tout bon développeur je me doit d'être un tout petit peu
fainéant et donc je voudrais savoir si il n'y avait pas une solution





Et Manu lui à répondu :
c'est une blague là ;-)



En fait c'est mon prof de BTS qui nous disait ça tout les jours pour
nous expliquer qu'il fallait écrire le moins de code possible, et
surtout écrire du code pour éviter les moindres saisies.



Ecrire le moins de code ne veux pas dire mal programmer et surtout en sql !
Tu prends le WLangage, tu écris très peu de code mais c'est gérer derrière
de manière transparente.
Tu prends SQLManagerX, il gère tout seul les ordres insert, update, delete.
Ton developpement est réduit de part une "encapsulation" de tes ordres de
bases.