免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1141 | 回复: 1
打印 上一主题 下一主题

pro*C不能动态指定表名,为什么? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-07-23 13:06 |只看该作者 |倒序浏览
我的程序如下,很简单,想查询数据,但是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,%s\n",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. }
复制代码


请指点!!

论坛徽章:
0
2 [报告]
发表于 2004-07-27 16:09 |只看该作者

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

这个你要用动态sql,不是简单定义个变量就可以了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP