在 C 语言中生成动态 SQL



我必须生成一个可以生成动态更新SQL并执行它的c程序。表名、要更新的列数和已知子句中的列仅在运行时。所以我将我的程序分为 2 个函数:

1)检查表存在 - 检查用户提供的表是否存在于db中。成功实施。

2)UpdateFunc - 从用户提供的数据生成SQL字符串并执行
查询。

我在第二个功能中遇到问题。我接受没有列,名称和值从用户更新。然后我使用 for 循环并将名称和值附加到我的 sql字符串:

sqlstring = 更新选项卡名称集 colname = colval,colname = colval 其中

然后我接受 where 子句数据并将其附加到我的字符串中。所以我的最后一个字符串是:

sqlstring = 更新选项卡名称集 colname = colval,colname = colval,其中 whcolname = whcolval

但是当我执行它时,我的程序挂起了。有人可以告诉我应该是什么吗
执行第二个功能的理想方法。

strSQL将是一个有效的 SQL 语句,没有用于绑定的占位符。这适用于具有数值和 varchar2 变量的查询。对于二进制文件,您可能需要在 Oracle 中实现 bin2hex() 和 hex2bin() 等函数。

一个简单的函数,如:

int Exec_Query(sql_context sqlCtx, char *strSQL)
{
//    struct sqlca sqlca;
    /* Sanity checks for sqlCtx and strSQL */
    EXEC SQL WHENEVER SQLERROR GOTO QueryErr;  
    /* Set the context */
    EXEC SQL CONTEXT USE :sqlCtx;  
    /* Execute the query */
    EXEC SQL EXECUTE IMMEDIATE :strSQL; 
    EXEC SQL COMMIT; 
    return 0;
QueryErr:
    /* printf("Err: Failure in Executing Queryn"); */
    /* printf("Debug: <%s>",sqlca.sqlerrm.sqlerrmc); */
    return -1;
}

通过Pro*C编译器将给出一个有效的C文件。

相关内容

  • 没有找到相关文章

最新更新