Après windows pour les nuls, voici PB pour les bons (ou presque).

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 29-11-2008 08:42:11

patricktobou  
Membre Geek
Lieu: Cameroun
Date d'inscription: 31-10-2008
Messages: 57
Pépites: 309
Banque: 0

Problème avec le SQL dynamique

Bonjour à tous,
Je suis entrain de faire une recherche multicritères et pour cela, j'utilise un variable de type string pour fabriquer ma requête SQL à partir du code. Donc ma requête n'est pas statique; elle varie en fonction des critères choisis. Après avoir retourné la variable string, je l'utilise comme suis:

Code: pb

string sql 
//
//Je fabrique mon sql dynamique dans le code (delete from etchr where ........)
//
//A la fin je veux éxécuter mon sql dynamique

EXECUTE IMMEDIATE :sql using sqlca;

if sqlca.sqlcode = 0 then
    messagebox("DELETE","Successful")
    return
elseif sqlca.sqlcode = -1
    messagebox("DELETE","Not Successful"+upper(sqlca.Errtext)) //c'est un code qui vient de mémoire
end if


le message d'erreur qui apparaît dans la boite de dialogue: LES VARIABLES NE SONT PAS LIEES
Est ce que quelqu'un peut m'expliquer ce message car j'ai déjà tout essayé.

Une petite précision: Lorsque je fais EXECUTE IMMEDIATE en passant une requête statique du genre
EXECUTE IMMEDIATE " delete from etchr where etchr.ncp = :numcpt " using sqlca;  ça marche mais lorsque je récupère ma chaîne dynamiquement et je l'utilise ça ne marche plus et ça m'affiche le message ci-dessus

Message de modération

Hors ligne

 

#2 29-11-2008 10:45:46

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: Problème avec le SQL dynamique

Bonjour patricktobou,

Afin de résoudre ton problème, merci de nous préciser les informations suivantes:
- Version PB
- SGBD et sa version
- Connexion via ODBC, OLE-DB, native...

Il serait bon également de vérifier dans le débugger PB la syntaxe de ta chaîne SQL constituée dynamiquement.
Il doit probablement y avoir une erreur de formattage.


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#3 29-11-2008 11:33:17

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: Problème avec le SQL dynamique

Bonjour,

Tu ne peux pas passer de variables dans une requête EXECUTE IMMEDIATE comme tu le fais en EMBEDDED SQL.

Si ta requête à la forme suivante en EMBEDDED SQL :

Code:

delete from etchr where etchr.ncp = :numcpt " using sqlca;

En EXECUTE IMMEDIATE cela devient :

Code: PB

Integer li_numcpt
String ls_sql

ls_sql = "delete from where etchr.ncp = " + String(li_numcpt)

EXECUTE IMMEDIATE :ls_sql USING SQLCA;

Hors ligne

 

#4 01-12-2008 09:57:27

patricktobou  
Membre Geek
Lieu: Cameroun
Date d'inscription: 31-10-2008
Messages: 57
Pépites: 309
Banque: 0

Re: Problème avec le SQL dynamique

Je travaille avec PowerBuilder 11, j'utilise une base de données oracle 10g et je suis sous environnement XP.
Merci pour la remarque

Hors ligne

 

#5 21-10-2009 14:21:03

ydl  
Membre Geek
Date d'inscription: 23-10-2007
Messages: 62
Pépites: 10,341
Banque: 0

Re: Problème avec le SQL dynamique

Utilise un datastore, compose ta requete et passe lui ta requete

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22