pro*C不能动态指定表名,为什么?
我的程序如下,很简单,想查询数据,但是select * from tabel :db_table;我定义的变量db_table总是报错,好像是找不到db_table,为什么?
我define了一个DB_TABLE,而后STRCPY到db_table变量中,在select 语句中添加进去。预编译出错,如果将db_table换为确定的数据库名,就没有错!!
该怎么办?
程序如下:
- EXEC SQL INCLUDE SQLCA;
- EXEC SQL INCLUDE SQLDA;
- #define USERNAME "LUCKY"
- #define PASSWORD "sys"
- #define DB_NAME "DWP"
- #define DB_LINK "202.112.253.186"
- #define DB_TABLE "MMINFO1"
- EXEC SQL BEGIN DECLARE SECTION;
- VARCHAR username[20];
- VARCHAR password[20];
- VARCHAR db_name[20];
- VARCHAR db_link[20];
- char db_table[20];
- EXEC SQL END DECLARE SECTION;
- void sqlerror(char *msg)
- {
- printf("n%s,%ld,%sn",msg,sqlca.sqlcode,(char *)sqlca.sqlerrm.sqlerrmc);
- EXEC SQL ROLLBACK WORK RELEASE;
- }
- int main(void)
- {
- EXEC SQL BEGIN DECLARE SECTION;
- char var1[100];
- char var2[4000];
- EXEC SQL END DECLARE SECTION;
- strcpy(username.arr,USERNAME);
- username.len = strlen(username.arr);
- strcpy(password.arr,PASSWORD);
- password.len = strlen(password.arr);
- strcpy(db_name.arr,DB_NAME);
- db_name.len = strlen(db_name.arr);
- strcpy(db_link.arr,DB_LINK);
- db_link.len = strlen(db_link.arr);
- strcpy(db_table,DB_TABLE);
- EXEC SQL WHENEVER SQLERROR DO sqlerror("ORACLE ERROR:");
- EXEC SQL CONNECT :username IDENTIFIED BY :password USING :db_name;
- EXEC SQL SELECT * INTO :var1, :var2 FROM[b] :db_table;(这里找不到????)[/b]
- printf("connected!!:)n");
- EXEC SQL ROLLBACK WORK RELEASE;
- }
复制代码
请指点!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这个你要用动态sql,不是简单定义个变量就可以了