PROC中select INTO 变量,怎样保存多个变量

ccjsj1 2013-06-23 09:39:23
大家好,请教个问题,用PROC调用数据时,如下可以将返回之存到变量minute中
EXEC SQL SELECT count(*) INTO :minute

当select返回值有多行多列时,怎样保存到多个变量中呢(想要下面的三个数值)?谢谢!

例如语句返回值如下:
avgtalk
1 80.904388
2 139.175
3 125.6
...全文
713 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccjsj1 2013-06-27
  • 打赏
  • 举报
回复
搞定了,用数组就可以了(感谢cu的doni) int a[3] INTO :a 谢谢各位回复!
ccjsj1 2013-06-24
  • 打赏
  • 举报
回复
谢谢回复,但是好像不行,该语句结果是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;
wushangjimo 2013-06-24
  • 打赏
  • 举报
回复
select c1,c2,c3 into var1,var2,var3 from ...
u010412956 2013-06-23
  • 打赏
  • 举报
回复
复合数据类型
sych888 2013-06-23
  • 打赏
  • 举报
回复
可以用RECORD,配合集合的方式来操作
ccjsj1 2013-06-23
  • 打赏
  • 举报
回复
出现乱了码,用的不对吧? 执行结果如下: [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;
}
爱情_海 2013-06-23
  • 打赏
  • 举报
回复
恩 用RECORD
ccjsj1 2013-06-23
  • 打赏
  • 举报
回复
谢谢楼上各位,对proc不熟悉,能给个例子吗?
善若止水 2013-06-23
  • 打赏
  • 举报
回复
你这样是肯定不行的,推荐用2楼的方法。

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧