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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [PL/SQL] LIKE, LENGTH et autres instructions....

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PL/SQL] LIKE, LENGTH et autres instructions....

n°500748
liengy
Approuved !!!
Posté le 28-08-2003 à 16:46:13  profilanswer
 

Voilà je suis tjrs sur mon script PL/SQL...
 
Dans celui je veux faire une requete avec un
LENGTH()
 
ou alors avec un
LIKE '__'
 
 
Ces requetes fonctionnent seules (en sql)...
Mais lorsque je les imbrique dans un bloc PL/SQL, elles ne ramènent aucun résultat !!!!
 
 
Est-ce que ce type d'erreur vous rapelle quelque chose ???
 
 
 
Ca m'arrangerait.... :/
 
 
NB : Je suis sur une base Oracle....

mood
Publicité
Posté le 28-08-2003 à 16:46:13  profilanswer
 

n°500753
tomlameche
Et pourquoi pas ?
Posté le 28-08-2003 à 16:57:16  profilanswer
 

liengy a écrit :

Voilà je suis tjrs sur mon script PL/SQL...
 
Dans celui je veux faire une requete avec un
LENGTH()
 
ou alors avec un
LIKE '__'
 
 
Ces requetes fonctionnent seules (en sql)...
Mais lorsque je les imbrique dans un bloc PL/SQL, elles ne ramènent aucun résultat !!!!
 
 
Est-ce que ce type d'erreur vous rapelle quelque chose ???
 
 
 
Ca m'arrangerait.... :/
 
 
NB : Je suis sur une base Oracle....


Montre ton code, sinon, on ne pourra pas  dire grand chose je le crains ...


---------------
Gérez votre collection de BD en ligne ! ---- Electro-jazzy song ---- Dazie Mae - jazzy/bluesy/cabaret et plus si affinité
n°500758
liengy
Approuved !!!
Posté le 28-08-2003 à 17:03:14  profilanswer
 

Code :
  1. DECLARE
  2.   -- Récupération de la table tmp_secteur :
  3.   cursor cur_tmp_secteur1 is
  4.    select TSECT_CODE_POSTAL,
  5.            TSECT_LIBELLE_COMMUNE,
  6.            TSECT_CODE_AGENCE,
  7.            TSECT_ZONE_VAM,
  8.            TSECT_CODETARIFVAM,
  9.            TSECT_AUTORISATION,
  10.            SUBSTR(TSECT_ID_CODETARIFVAM, 3, 5) AS TSECT_ID_CODETARIF,
  11.            TSECT_CORRECTIF,
  12.            TSECT_ID_CORRECTIF
  13.       from TMP_SECTEUR
  14.   where TRIM(TSECT_CODE_POSTAL) LIKE '__';
  15. BEGIN
  16.   -- Suppression de toutes les lignes dans les tables à modifier :
  17.   --TRUNCATE TABLE correctif REUSE STORAGE;
  18.   --TRUNCATE TABLE zone_geo REUSE STORAGE;   
  19.   DELETE FROM correctif;
  20.   DELETE FROM zone_geo;
  21.  
  22.   for cur_tmp_secteur_rec1 in cur_tmp_secteur1 loop
  23. -- Mise à jour de COMMUNE :
  24.     UPDATE commune
  25.        SET COM_AUTORISATION = cur_tmp_secteur_rec1.TSECT_AUTORISATION, COM_ID_CODESTARIF_VAM = cur_tmp_secteur_rec1.TSECT_ID_CODETARIF
  26.      WHERE com_code_postal LIKE cur_tmp_secteur_rec1.TSECT_CODE_POSTAL || '%' ;
  27. COMMIT;
  28.   end loop;
  29. END;


 
 
Si je ne l'avais pas mis, c que la requete SELECT autant que la requete INSERT fonctionne hors du bloc SQL.... :/
 
Je ne pense donc pas que ça vienne du code...

n°500780
tomlameche
Et pourquoi pas ?
Posté le 28-08-2003 à 17:24:35  profilanswer
 

liengy a écrit :

Code :
  1. DECLARE
  2.   -- Récupération de la table tmp_secteur :
  3.   cursor cur_tmp_secteur1 is
  4.    select TSECT_CODE_POSTAL,
  5.            TSECT_LIBELLE_COMMUNE,
  6.            TSECT_CODE_AGENCE,
  7.            TSECT_ZONE_VAM,
  8.            TSECT_CODETARIFVAM,
  9.            TSECT_AUTORISATION,
  10.            SUBSTR(TSECT_ID_CODETARIFVAM, 3, 5) AS TSECT_ID_CODETARIF,
  11.            TSECT_CORRECTIF,
  12.            TSECT_ID_CORRECTIF
  13.       from TMP_SECTEUR
  14.   where TRIM(TSECT_CODE_POSTAL) LIKE '__';
  15. BEGIN
  16.   -- Suppression de toutes les lignes dans les tables à modifier :
  17.   --TRUNCATE TABLE correctif REUSE STORAGE;
  18.   --TRUNCATE TABLE zone_geo REUSE STORAGE;   
  19.   DELETE FROM correctif;
  20.   DELETE FROM zone_geo;
  21.  
  22.   for cur_tmp_secteur_rec1 in cur_tmp_secteur1 loop
  23. -- Mise à jour de COMMUNE :
  24.     UPDATE commune
  25.        SET COM_AUTORISATION = cur_tmp_secteur_rec1.TSECT_AUTORISATION, COM_ID_CODESTARIF_VAM = cur_tmp_secteur_rec1.TSECT_ID_CODETARIF
  26.      WHERE com_code_postal LIKE cur_tmp_secteur_rec1.TSECT_CODE_POSTAL || '%' ;
  27. COMMIT;
  28.   end loop;
  29. END;


 
 
Si je ne l'avais pas mis, c que la requete SELECT autant que la requete INSERT fonctionne hors du bloc SQL.... :/
 
Je ne pense donc pas que ça vienne du code...


Ben au niveau du select, déjà, ça me parait pas terrible ton like '___' ... autant mettre = '___', ce que tu veux est peut être plutot like '___%', non ?
Quand au code, je ne sais pas quelle est ta version d'Oracle, mais pour parcourir un curseur, d'habitude, je commence à l'ouvrir via Open mon_curseur.
exemple :
OPEN mon_curseur;
LOOP
FETCH mon_curseur INTO variable_qui_va_bien;
EXIT WHEN curs_offre%NOTFOUND;
[des bidules à faire pendant ce temps là]
end loop;
close mon_curseur;
 
Mais, bon, y a sans doute des trucs que je connais pas en PL/SQL.


---------------
Gérez votre collection de BD en ligne ! ---- Electro-jazzy song ---- Dazie Mae - jazzy/bluesy/cabaret et plus si affinité
n°500786
liengy
Approuved !!!
Posté le 28-08-2003 à 17:29:59  profilanswer
 

En faisant de la meme facon sans que ce soit qu'il est une clause where dans mon select, et avec un insert à la place du update (sur une autre table), ça fonctionne sans ouvrir mes curseur...
 
Mais je vais essayé avec le =, mais je croyais que le carctère '_' était réservé à l'instruction LIKE... :/

n°500845
liengy
Approuved !!!
Posté le 28-08-2003 à 17:59:26  profilanswer
 

Le caractère '_' fonctionne bien uniquement avec l'instruction LIKE....
 
En revanche, j'ai bien trouvé mon pb...
 
Il s'agissait en fait d'un TRIM manquant...
Ce qui ne dérange pas dans une requete SQL simple, mais bien souvent dans du code.... :/
 
Merci kan meme... :jap:

n°500865
tomlameche
Et pourquoi pas ?
Posté le 28-08-2003 à 18:17:45  profilanswer
 

liengy a écrit :

Le caractère '_' fonctionne bien uniquement avec l'instruction LIKE....
 


 [:aaah] ça, ça m'etonne carément ... je bosse avec Oracle depuis 3 ans et j'ai jamais eu de problème avec le caractère '_' ... bizarre ...


---------------
Gérez votre collection de BD en ligne ! ---- Electro-jazzy song ---- Dazie Mae - jazzy/bluesy/cabaret et plus si affinité
n°501339
liengy
Approuved !!!
Posté le 29-08-2003 à 09:31:57  profilanswer
 

tomlameche a écrit :


 [:aaah] ça, ça m'etonne carément ... je bosse avec Oracle depuis 3 ans et j'ai jamais eu de problème avec le caractère '_' ... bizarre ...  

J'en suis désolée.... Mais sur ma base, la requete :  

Code :
  1. select TSECT_CODE_POSTAL,
  2.            TSECT_LIBELLE_COMMUNE,
  3.            TSECT_CODE_AGENCE,
  4.            TSECT_ZONE_VAM,
  5.            TSECT_CODETARIFVAM,
  6.            TSECT_AUTORISATION,
  7.            SUBSTR(TSECT_ID_CODETARIFVAM, 3, 5) AS TSECT_ID_CODETARIF,
  8.            TSECT_CORRECTIF,
  9.            TSECT_ID_CORRECTIF
  10.       from TMP_SECTEUR
  11.   where TRIM(TSECT_CODE_POSTAL) = '__'


ne renvoie aucun résultat,
 
tandis que celle-ci :

Code :
  1. select TSECT_CODE_POSTAL,
  2.            TSECT_LIBELLE_COMMUNE,
  3.            TSECT_CODE_AGENCE,
  4.            TSECT_ZONE_VAM,
  5.            TSECT_CODETARIFVAM,
  6.            TSECT_AUTORISATION,
  7.            SUBSTR(TSECT_ID_CODETARIFVAM, 3, 5) AS TSECT_ID_CODETARIF,
  8.            TSECT_CORRECTIF,
  9.            TSECT_ID_CORRECTIF
  10.       from TMP_SECTEUR
  11.   where TRIM(TSECT_CODE_POSTAL) LIKE '__'


en renvoie 127.... [:spamafote]


Message édité par liengy le 29-08-2003 à 09:33:10
n°501368
tomlameche
Et pourquoi pas ?
Posté le 29-08-2003 à 09:59:30  profilanswer
 

C'est dingue ça, j'ai fait l'essai juste pour voir, et j'ai aucun problème avec '_' sous une version 8.1.7.4
Tu as quelle version d'Oracle ? ( je déteste ne pas comprendre l'origine d'une telle absurdité  [:mmmfff] )


---------------
Gérez votre collection de BD en ligne ! ---- Electro-jazzy song ---- Dazie Mae - jazzy/bluesy/cabaret et plus si affinité
n°505083
liengy
Approuved !!!
Posté le 02-09-2003 à 14:00:47  profilanswer
 

Je ne vais pas pouvoir te renseigner bcp.... Car ct pour un job d'été, et ça se terminait vendredi....
 
tous cee que je sais c que ct une version 8.1, mais je ne connais pas la version plus précisemment... dsl... :/

mood
Publicité
Posté le 02-09-2003 à 14:00:47  profilanswer
 

n°512300
jenner
Posté le 11-09-2003 à 11:14:13  profilanswer
 

les caractères _ ne sont ils pas permis que sur invocation d'un LIKE ?
 
Pour la façon de balayer ton curseur c'est la bonne solution.
la solution donnée + haut avec Open Cursor est carrément obsolète en ORACLE 8

n°512315
tomlameche
Et pourquoi pas ?
Posté le 11-09-2003 à 11:31:52  profilanswer
 

Citation :

la solution donnée + haut avec Open Cursor est carrément obsolète en ORACLE 8


Merci du renseignement, j'ai pris cette habitude sous Oracle 7.3 et je n'ai jamais remis en question cette technique.
C'est clair que cette syntaxe est plus simple.


---------------
Gérez votre collection de BD en ligne ! ---- Electro-jazzy song ---- Dazie Mae - jazzy/bluesy/cabaret et plus si affinité

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

  [PL/SQL] LIKE, LENGTH et autres instructions....

 

Sujets relatifs
[SECURITE] L'injection SQL et ses conséquences[SQL] Comment faire un Update avec des references ???????
[PL/SQL] récupération d'un sequence.currval ?????SQL supprimer des données d'une table en fonction d'une autre
Requete SQL trop hard pour moi ![MySQL] type char et norme SQL
[SQL] insertion pb de clé (DTS SQL SERVER)[SQL]jointure entre 3 tables
[PHP/SQL] Récupérer une valeur[Access/SQL] Quick Question sur les indexes
Plus de sujets relatifs à : [PL/SQL] LIKE, LENGTH et autres instructions....


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