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 25-03-2011 14:17:24

Soryu  
Membre
Date d'inscription: 15-03-2011
Messages: 4
Pépites: 4
Banque: 0

Passage de paramêtre dans une requète SQL

Bonjour,

Alors voila, j'ai créé une costum class regroupant plusieurs fonctions, l'une d'elle étant l'ouverture d'une table (non spécifique), avec champ et nom de table passés en paramêtres.
Cette fonction à pour but de récupérer le plus grand identifiant de la clef primaire d'une table.

Niveau code ça donne :

Appel de la fonction :
fu_max_id( String ls_table_name, String ls_field_name )

Requête SQL :
DECLARE cur_id CURSOR FOR
             SELECT Max(:ls_field_name)
             FROM :ls_table_name
             USING sqlca;

Le soucis vient du fait qu'apparement la requète ne prend pas en compte les arguments. J'ai fais quelques recherches sur le site et j'ai pu voir que cela pouvait différer d'un SGBD à l'autre. Pour ma part j'utilise Sybase (SQL Anywhere 12) et je travaille sous PB 12.1.
Autant pour une clause Where le passage en argument ne pose aucun soucis, autant pour un Select ou un From ça pêche...

J'aurais donc aimé savoir si certains d'entre vous on déjà eu le même problème, et donc savoir si je ne me suis pas planté dans le code, sinon savoir s'il y a moyen de contourner le problème.

Merci d'avance et bon w-e.

Dernière modification par Soryu (25-03-2011 14:19:20)

Hors ligne

 

#2 25-03-2011 14:41:10

shahin  
Modérateur
Award: bf
Lieu: val de marne
Date d'inscription: 26-09-2006
Messages: 938
Pépites: 8,675,050,269
Banque: 16,218,225,127,617

Re: Passage de paramêtre dans une requète SQL

Alors :
2) Regarde l'aide de PB sur "Dynamic SQL Format 3 SQL statement"

1) C'est la pire des méthodes pour créer une clef primaire. En particulier, si tu as beaucoup d'insertions tu es sûr d'avoir des problèmes de deadlock. Pourquoi tu n'utilise pas une colonne identity ?


never let people work on more than one thing at once.

Hors ligne

 

#3 25-03-2011 14:59:29

Soryu  
Membre
Date d'inscription: 15-03-2011
Messages: 4
Pépites: 4
Banque: 0

Re: Passage de paramêtre dans une requète SQL

La finalité de la classe est de créer une table recensant les enregistrements vide et de pouvoir les réutiliser.

La requète me sert juste à récupérer le nombre d'enregistrements présent dans la table, afin de pouvoir, par la suite, tester chaque ligne d'enregistrement, par itération.
Sans cet identifiant maximum, je ne sais pas combien d'itération je devrais faire.

Je ne suis sous PB que depuis 2 semaines ^^" Et le SQL dynamique lui étant lié ne me parle pas des masses

Hors ligne

 

#4 25-03-2011 15:15:51

shahin  
Modérateur
Award: bf
Lieu: val de marne
Date d'inscription: 26-09-2006
Messages: 938
Pépites: 8,675,050,269
Banque: 16,218,225,127,617

Re: Passage de paramêtre dans une requète SQL

Soryu a écrit:

La requète me sert juste à récupérer le nombre d'enregistrements présent dans la table

Dans ce cas, c'est plutôt Count que Max.



ça doit faire un truc comme ça

Code: pb

ls_select = "SELECT Max(...) FROM .."
DECLARE my_cursor DYNAMIC CURSOR FOR SQLSA ;

PREPARE SQLSA FROM ls_select  ;

OPEN DYNAMIC my_cursor ;

FETCH my_cursor INTO :ll_id ;

CLOSE my_cursor ;

never let people work on more than one thing at once.

Hors ligne

 

#5 25-03-2011 15:35:11

Soryu  
Membre
Date d'inscription: 15-03-2011
Messages: 4
Pépites: 4
Banque: 0

Re: Passage de paramêtre dans une requète SQL

Nickel chrome, je cherchais un moyen par concaténation, c'est parfait ^^"

Merci à toi !

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22