2016-10-14 1 views
0

Quand une requête PREPARE QUERY échoue-t-elle dans PRO C?Quand une requête PREPARE QUERY échoue-t-elle dans PRO C?

EXEC SQL AT :db_id PREPARE QUERY FROM :sql_query; 

bool sql_status = (sqlca.sqlcode == OERR_ORACLE_SUCCESS); 

if (sql_status) 
{ 
} 
else 
{ 
} 

Je n'ai pas ce problème jusqu'à récemment, le code fonctionnait très bien PREPARE QUERY fonctionne bien (si aller dans loop_, mais tout d'un coup il a échoué, et ne fonctionne pas après (aller en boucle d'autre).

Rien n'a changé et il est le même binaire.

Quelqu'un face problème similairement dans le passé?

+0

Je suppose que vous voudrez peut-être regarder la valeur de la sql_query comme il se prépare dynamiquement à partir de cela. –

Répondre

0

J'ai écrit beaucoup de c pro * dans le passé, et au fil du temps réalisé que vous ne voulez pas vérifier le code de retour de l'instruction PREPARE car elle ne renvoie jamais de valeur. Voici ce que je veux dire:

La valeur de sqlca.sqlcode de PREPARE est le code de retour de l'instruction qui s'exécutait immédiatement AVANT l'instruction PREPARE. En d'autres termes, si vous vérifiez la sortie de l'instruction PREPARE et l'instruction exécutée juste avant l'échec de l'instruction PREPARE, le code de retour de la préparation échoue. Si la déclaration précédente a réussi, alors le PREPARE semble avoir réussi. En d'autres termes, la valeur prepare sqlca.sqlcode est fondamentalement nulle (elle n'échoue jamais seule). Donc, si le PREPARE échoue maintenant, vérifiez l'instruction exécutée juste avant l'instruction PREPARE et assurez-vous de vérifier la valeur de sqlca.sqlcode de celle-ci. Mon pari est que la déclaration précédente échoue, et l'erreur retournée se rapporte à cette déclaration. Avoir du sens?

-Jim

+0

merci pour votre réponse, je vais regarder dans la question en gardant cela dans mon esprit. – naren

+0

Mais avez-vous une page officielle ou de la documentation qui supporte votre point de vue? Merci d'avance. – naren