在C中执行字符串作为SQL查询

时间:2016-11-15 19:23:44

标签: sql c oracle execute

可以在C中执行字符串作为SQL查询并获得结果吗?我正在尝试编译这段代码:

EXEC SQL
    EXECUTE IMMEDIATE : sql_formula INTO :sql_prec_desconto_mp;

但我有这个错误:

  

第10548行第35页,文件

中的错误      

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

            EXECUTE IMMEDIATE : sql_formula INTO :sql_prec_desconto_mp;
     

PCC-S-02201,在期待其中一个时遇到符号“INTO”   以下内容:

     

([。++ - - >

如何获取SQL查询的结果?如果我删除了INTO子句,我可以编译而不会出错。

提前致谢。

1 个答案:

答案 0 :(得分:1)

该格式为described in the documentation

  

准备并执行DELETE,INSERT或UPDATE语句或不包含主机变量的PL / SQL块。

您不会使用其中一种DML类型,而且那些不会识别INTO。当您运行没有INTO的动态SQL查询时,查询永远不会被实际执行(see the note in the docs)。

立即想到做我认为你想要的事情的最快方法是准备一个游标并获取结果:

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;