2011-03-03 5 views
-1

< ------- ------ PeopleCode>PeopleCode, SQLEXEC pas récupérer des données correctes

Salut,

J'ai une requête SQL que j'ai essayé d'exécuter à l'aide à la fois SQLEXEC et SQL.fetch() mais le problème est, quand je passe les valeurs aux paramètres (: 1,: 2 ...) il ne retourne pas une ligne mais quand je hardcode les valeurs dans la clause where de la requête elle-même, il récupère la valeur correcte. Quelqu'un peut-il aider?

Ma requête ressemble à l'exemple de requête suivant: Select * from PS_rec1 où EmplID =: 1 et plan_type =: 2

il ne renvoie aucune donnée jusqu'à ce que je hardcode les valeurs.

J'ai vérifié les valeurs à l'extrémité arrière et certaines données sont là pour être récupérées. De plus, la même requête récupère des données lorsqu'elle est exécutée dans TOAD.

+0

J'écris ce SQLEXEC dans un moteur d'application –

+0

En attendant de l'aide sans donner suffisamment de détails sur le code de problème, pensez à mettre l'énoncé exact dans votre question. Et comme vous avez déjà mentionné que vous avez répertorié le contenu de vos variables de liaison, incluez-le dans la question. – WayneH

Répondre

0

Il a fallu une autre mise à jour du même enregistrement pour obtenir les valeurs récupérées dans SQL exec. Je ne sais pas quel était le problème mais je suppose qu'il se pourrait que la mise à jour précédente n'a pas écrit les changements à la base de données même après une validation explicite.

0

Avez-vous essayé de sortir vos liaisons dans un fichier journal juste avant de les utiliser dans votre instruction SQL?

Si les liaisons ne fonctionnent pas, mais que les littéraux le sont, vos liaisons ne contiennent peut-être pas les valeurs attendues.

Vous pouvez également définir explicitement les liaisons aux valeurs attendues juste avant l'instruction SQL. Cela prouvera que la façon dont vous passez dans les binds fonctionne correctement.

+0

Merci Peoplesoft tipster, je l'ai fait en vérifiant les valeurs de liaison dans un MessageBox, ils contiennent les valeurs correctes comme prévu –

0

Ok, vous devez mettre votre instruction SQLExec exacte dans la question.

Mais, avez-vous vraiment "Select * ..." dans un SQLExec? Combien de colonnes y a-t-il dans votre tableau? Puisque vous mentionnez la clause où est votre déclaration

SQLExec("select * from PS_rec where emplid=:1 and plan_type=:2", &var1, &var2, &vartocontainthewholerow); 

qui fonctionnera dans un outil SQL (crapaud), mais ne fonctionnera probablement pas en AE ou tout autre type de programme PeopleCode.

Maintenant, si votre table a trois colonnes, si vous ne pas avoir quelque chose comme ceci:

SQLExec("select emplid, plan_type, column3 from PS_rec where emplid = :1 and plan_type=:2", &emplidIn, &plan_typeIn, &emplidOut, &plan_typeOut, &column3Out); 

Notez que trois colonnes de la table qui EmplID et plan_type sont deux d'entre eux, vous devez lister tous les colonnes que vous voulez, pas d'astérisques '*'. Sorte de bête de sélectionner l'emplid et plan_type cependant.

+0

Désolé mais je ne pouvais pas mettre en place plus d'informations concernant le SQL à l'emploi. De toute façon, le problème a été résolu. Cela était dû à des mises à jour incohérentes avant l'exécution du SQL en question. –

Questions connexes