据我理解pro*C最总也是用的OCI接口,是不?那么如果用pro*C可以,用OCI应该也可以的,请各位继续赐教

解决方案 »

  1.   

    你是想让我教你oci怎么用吗?很多的内容啊,你应该去oracle 目录下找几个demo 的例子看看
    cdemo81是最简单的例子了
      

  2.   

    这些东西主要要考虑sql类型与C语言类型的一一对应,按你说的,必须要有一种结构进行二者的传递,可以考虑用存储过程返回游标,程序里取游标返回的数据,或者只好在程序里定义结构,在程序里一条一条的得到结果集结果。
      

  3.   

    在oci中可以一次将一批结果取到c语言的数组中的
      

  4.   

    我们看过一些oci的例子,没有发现要找的东东,555...偶们会继续看的
    to xzou:是考虑‘只好在程序里定义结构,在程序里一条一条的得到结果集结果。’,但总感觉太麻烦了些
    to aniugecn:就是想知道如何取呀?!
    各位请再指教!
      

  5.   

    to haihong:我们看过一些oci的例子,没有发现要找的东东,555...偶们会继续看的
    to xzou:是考虑过‘只好在程序里定义结构,在程序里一条一条的得到结果集结果。’,但总感觉太麻烦了些
    to aniugecn:就是想知道如何取呀?!
    各位请再指教!
      

  6.   

    其实挺容易的在c中定义一个数组a[100],在调用OCIDefineByPos时指定此数组为输出变量
    而后在调用OCIStmtFetch时指定取100条那么就可以将从当前位置开始的100条记录取
    到数组a中。
      

  7.   

    to aniugecn()
    你的数组定义的应该是个结构数组把,要与我取得的结果集记录类型相对应把,这个怎么简单呢?
    比如:我在sql里 是为了取得 select id,name,age,errmag from mytable的结果集
    其中,id number(10) name char(20) age int errmsg varchar2(30)
    你在c里面的a数组该怎么定义,如何确定我的返回记录数?难道还要先select count(*) 先?
    如果我想取得所有的值呢?
      

  8.   

    to:xzou(缺齿小狼)当数据从ORACLE中取到C中时自动进行数据转换,当然不可能一次把所有的
    记录都取出的,也是要多次取直至取完,只不过每次取的记录多而已
      

  9.   

    to aniugecn():
    能给个这方面的小例程吗?谢谢,或是什么地方有着方面的资料也行
      

  10.   

    不好意思,手头没有这方面的例子,你可以到oracle公司的网站上下载oci的开发指南,那上面
    有详细的介绍
       
      

  11.   

    你可以先用pro*c,然后查看编译出的c代码
      

  12.   

    是么,我们这样试过,但转换后的C代码好像没有OCI函数呢
      

  13.   

    那只能说明你没有用到oci的函数,
    试着定义OCIClobLocator *a_clob;
    这个应该是oci定义的类型吧