2016-11-15 1 views
1

est-il possible d'exécuter une chaîne en tant que requête SQL dans C et obtenir le résultat? Je suis en train de compiler ce code:Exécuter une chaîne en tant que requête SQL dans C

EXEC SQL 
    EXECUTE IMMEDIATE : sql_formula INTO :sql_prec_desconto_mp; 

Mais j'ai cette erreur:

Error at line 10548, column 35 in file

D:\syncs\AIX\fuentes\funcn\niv2\src\rutin as.pc

  EXECUTE IMMEDIATE : sql_formula INTO :sql_prec_desconto_mp; 

PCC-S-02201, Encountered the symbol "INTO" when expecting one of the following:

; ([ . ++ -- ->

Comment puis-je obtenir le résultat de la requête SQL? Si je supprime la clause INTO, je peux compiler sans erreur.

Merci d'avance.

Répondre

1

que le format est described in the documentation:

To prepare and execute a DELETE, INSERT, or UPDATE statement or a PL/SQL block containing no host variables.

vous ne faites pas l'un de ces types DML, et ceux qui ne reconnaissent pas INTO. Lorsque vous exécutez une requête SQL dynamique sans INTO la requête n'est jamais réellement exécutée (see the note in the docs).

Le moyen le plus rapide qui vient immédiatement à l'esprit de faire ce que je pense que vous voulez, est de préparer un curseur et aller chercher le résultat:

EXEC SQL PREPARE stmt FROM :sql_formula; 
EXEC SQL DECLARE cur CURSOR FOR stmt; 
EXEC SQL OPEN cur; 
EXEC SQL FETCH cur INTO :sql_prec_desconto_mp; 
+0

Merci pour la réponse, ce code a résolu mon problème! :) –