免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: bleem1998
打印 上一主题 下一主题

Oracle Pro*c入门问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-05-15 14:04 |只看该作者
返回结果集缓缓再说
现在这个程序死循环了
在while(1)那里死循环
怎么搞的


  1. #include <stdio.h>

  2. EXEC SQL INCLUDE SQLCA;
  3. #define USERNAME        "fa"
  4. #define PASSWORD        "system"

  5. int DB_login(void) {
  6.         EXEC SQL WHENEVER SQLERROR GOTO SqlError;
  7.         EXEC SQL CONNECT :USERNAME IDENTIFIED BY :PASSWORD;
  8.         EXEC SQL SET TRANSACTION READ WRITE;

  9.         if (getenv( "NLS_DATE_FORMAT" ) == NULL) {
  10.                 EXEC SQL ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY/MM/DD';
  11.         }

  12.         return (0);

  13. SqlError:
  14.         return(-1);
  15. }

  16. char *exec_query(char *sql_str, int *col_len)
  17. {
  18.         char c1[10],c2[10];
  19.         char *ret = NULL;
  20.         char lsql[128];
  21.         
  22.         /* DB Search    */
  23.         exec sql whenever sqlerror continue;
  24.         exec sql whenever not found do break;

  25.         strcpy(lsql, sql_str);
  26.         exec sql prepare psql from :lsql;
  27.         exec sql declare cur3 cursor for psql;
  28.         exec sql open cur3;
  29.         
  30.         ret = malloc(5000);
  31.         while (1) {
  32.                 EXEC SQL FETCH cur3 INTO :c1, :c2;
  33.                 memcpy(ret, c2, 10);
  34.         }
  35.         return ret;
  36. }

  37. int main()
  38. {
  39.         printf("%d\n",DB_login());
  40.         printf("%s\n",exec_query("select a,b from t1;",NULL));
  41. }

复制代码

论坛徽章:
0
12 [报告]
发表于 2007-05-15 14:09 |只看该作者

把sql语句后面的;去掉就好了。。。。

论坛徽章:
0
13 [报告]
发表于 2007-05-15 14:24 |只看该作者
我的ORACLE_HOME下没有demo和sample呢

说说我是怎么打算返回结果集的吧
看起来像这个样子

  1. //首先要告诉函数你查询的是几个字段以及他们的长度
  2. exec_sql(char *sql_str, char *col_len, int col_nums)
  3. {
  4.       if col_nums == 1
  5.           exec sql fetch cur into :c1;
  6.      if col_nums == 2
  7.           exec sql fetch cur into :c1,c2;
  8.      if col_nums == 3
  9.           exec sql fetch cur into :c1,:c2,c3;
  10. ....

  11. }
复制代码

嘿嘿

论坛徽章:
0
14 [报告]
发表于 2007-05-15 18:30 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP