Quoi, tu ne connais pas PB ? Va falloir parcourir tout le forum alors !

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