大家好,请教个问题,用PROC调用数据时,如下可以将返回之存到变量minute中
EXEC SQL SELECT count(*) INTO :minute当select返回值有多行多列时,怎样保存到多个变量中呢(想要下面的三个数值)?谢谢!例如语句返回值如下:
   avgtalk
1  80.904388
2  139.175
3  125.6 

解决方案 »

  1.   

    可以用RECORD,配合集合的方式来操作
      

  2.   

    谢谢楼上各位,对proc不熟悉,能给个例子吗?
      

  3.   

    出现乱了码,用的不对吧?执行结果如下:
    [oracle@DB2 proc]$ ./t10
    Connect oracle success...
    avg ok.
    ,´ÇM,
    [oracle@DB2 proc]$ 
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <time.h>
    #include "/home/oracle/product/OraHome/precomp/public/sqlca.h"EXEC SQL INCLUDE SQLCA;struct avg_talk_t {
            char ICall_Chinese[64];
            char ICall_English[64];
            char RemoteService[64];
    };int main(void) {
            int ret;        EXEC SQL BEGIN DECLARE SECTION;        char conn_db[64]="app_user/123456@mydata";        struct avg_talk_t avg_talk;        EXEC SQL END  DECLARE SECTION;        EXEC SQL CONNECT :conn_db;        if(sqlca.sqlcode==0) {
                    printf("Connect oracle success...\n");
            }
            else {
                    printf("%s",sqlca.sqlerrm.sqlerrmc);
                    return -1;
            }        EXEC SQL SELECT sum((time_callend-time_callconnect)*24*3600)/count(*) INTO :avg_talk from calldata t where to_char(time_callstart,'yyyymmdd')='20130529' and queueid is not null group by queueid;
            printf("avg ok.\n");        printf("%s,%s,%s\n",avg_talk.ICall_Chinese,avg_talk.ICall_English,avg_talk.RemoteService);        return 0;
    }
      

  4.   

    select c1,c2,c3 into var1,var2,var3 from ...
      

  5.   

    谢谢回复,但是好像不行,该语句结果是1列3行,不是3列1行例如语句返回值如下:
       avgtalk
    1  80.904388
    2  139.175
    3  125.6  查询语句:
    EXEC SQL SELECT sum((time_callend-time_callconnect)*24*3600)/count(*) INTO :avg_talk from calldata t where to_char(time_callstart,'yyyymmdd')='20130529' and queueid is not null group by queueid;
      

  6.   

    搞定了,用数组就可以了(感谢cu的doni) 
    int a[3]
    INTO :a谢谢各位回复!