初学Pro*C 一个对于大家比较简单的问题

sailer_shi 2006-02-20 11:32:38
比方说一条sql语句

select a from b where c=d;
最后a得结果是:
1
2
3
4
5
我如果用Pro*C来写这个程序的话 是select a into :e from b where c = :d; 那么最后我的变量e里面的值是什么样子的呢?
这个问题对于开发果pro*c得人来说应该不难,但是我总是想不通,希望大家能给我个能让我明白的答案,谢谢
...全文
100 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sailer_shi 2006-02-20
  • 打赏
  • 举报
回复
那我怎么才能将这些数据全部放到e里面呢?
超叔csdn 2006-02-20
  • 打赏
  • 举报
回复
如果A的记录数>1,那么这句话就会出错,触发EXCEPTION TOO_MANY_ROWS.
所以E什么都不是.
gx1_007 2006-02-20
  • 打赏
  • 举报
回复
是定义了一个二维数组,用于存储查询的多个结果的.不需要指定的.查询语句会把找到的多个结果值存入emp_name中,你试一下就知道了.
sailer_shi 2006-02-20
  • 打赏
  • 举报
回复
星仔:正好要问的就是这个按照你定义的char emp_name[20][20];应该是一个二维数组亚,你在into emp_name的时候没有指定向那个位置传亚?还是那个定义就不是定义二维数组的?
wffffc 2006-02-20
  • 打赏
  • 举报
回复
没错,如果你的返回结果不是很多的时候直接把e定义成数组就可以了,
如果放回的结果很多的时候最好用游标操作.
gx1_007 2006-02-20
  • 打赏
  • 举报
回复
把e定义为一个数组,就可以了。给你一个例子,你就明白了。注意emp_name[20][20]和salary[10]。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sqlca.h>

void sql_error(char *);
extern sqlglm(char *,int *,int *);


void main()
{
EXEC SQL BEGIN DECLARE SECTION;
VARCHAR userid[20], password[20];
char emp_name[20][20];
float salary[10];
int count;
EXEC SQL END DECLARE SECTION;
strcpy(userid.arr,"SCOTT");
userid.len =strlen(userid.arr);
strcpy(password.arr,"TIGER");
password.len = strlen(password.arr);
EXEC SQL WHENEVER SQLERROR DO sql_error("ORACLE--\n");
EXEC SQL CONNECT :userid IDENTIFIED BY :password;
printf("Connection as ORACLE user: %s\n",userid.arr);
EXEC SQL SELECT ename ,sal INTO :emp_name,:salary FROM emp
WHERE deptno = 20;
for(count = 0; count<sqlca.sqlerrd[2];count++)
printf("Employee name:%s, salary: %6.2f\n", emp_name[count],salary[count]);
EXEC SQL COMMIT WORK;

EXEC SQL COMMIT WORK RELEASE;
}
void sql_error(char *msg)
{
char err_msg[128];
size_t buf_len, msg_len;

EXEC SQL WHENEVER SQLERROR CONTINUE;
printf("\n%s\n", msg);
buf_len=sizeof(err_msg);
sqlglm(err_msg, &buf_len, &msg_len);
printf("%.*s\n", msg_len, err_msg);
EXEC SQL ROLLBACK RELEASE;
exit(EXIT_FAILURE);
}

17,086

社区成员

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

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