pro*C不能动态指定表名,为什么?

发布于 2022-06-15 19:18:25 字数 2926 浏览 817 评论 1

我的程序如下,很简单,想查询数据,但是select * from tabel :db_table;我定义的变量db_table总是报错,好像是找不到db_table,为什么?

我define了一个DB_TABLE,而后STRCPY到db_table变量中,在select 语句中添加进去。预编译出错,如果将db_table换为确定的数据库名,就没有错!!

该怎么办?

程序如下:

  1. EXEC SQL INCLUDE SQLCA;
  2. EXEC SQL INCLUDE SQLDA;
  3. #define USERNAME "LUCKY"
  4. #define PASSWORD "sys"
  5. #define DB_NAME "DWP"
  6. #define DB_LINK "202.112.253.186"
  7. #define DB_TABLE "MMINFO1"
  8. EXEC SQL BEGIN DECLARE SECTION;
  9.         VARCHAR username[20];
  10.         VARCHAR password[20];
  11.         VARCHAR db_name[20];
  12.         VARCHAR db_link[20];
  13.         char db_table[20];
  14. EXEC SQL END DECLARE SECTION;
  15. void sqlerror(char *msg)
  16. {
  17.         printf("n%s,%ld,%sn",msg,sqlca.sqlcode,(char *)sqlca.sqlerrm.sqlerrmc);
  18.         EXEC SQL ROLLBACK WORK RELEASE;
  19. }
  20. int main(void)
  21. {
  22.                 EXEC SQL BEGIN DECLARE SECTION;
  23.                 char var1[100];
  24.                 char var2[4000];
  25.         EXEC SQL END DECLARE SECTION;
  26.         strcpy(username.arr,USERNAME);
  27.         username.len = strlen(username.arr);
  28.         strcpy(password.arr,PASSWORD);
  29.         password.len = strlen(password.arr);
  30.        
  31.         strcpy(db_name.arr,DB_NAME);
  32.         db_name.len = strlen(db_name.arr);
  33.         strcpy(db_link.arr,DB_LINK);
  34.         db_link.len = strlen(db_link.arr);
  35.        
  36.         strcpy(db_table,DB_TABLE);
  37.        
  38.         EXEC SQL WHENEVER SQLERROR DO sqlerror("ORACLE ERROR:");
  39.        
  40.         EXEC SQL CONNECT :username IDENTIFIED BY :password USING :db_name;
  41.        
  42.         EXEC SQL SELECT * INTO :var1, :var2 FROM[b] :db_table;(这里找不到????)[/b]
  43.         printf("connected!!:)n");
  44.         EXEC SQL ROLLBACK WORK RELEASE;
  45. }

复制代码

请指点!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

自找没趣 2022-06-26 13:48:38

这个你要用动态sql,不是简单定义个变量就可以了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文