比方说一条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得人来说应该不难,但是我总是想不通,希望大家能给我个能让我明白的答案,谢谢
最后a得结果是:
1
2
3
4
5
我如果用Pro*C来写这个程序的话 是select a into :e from b where c = :d; 那么最后我的变量e里面的值是什么样子的呢?
这个问题对于开发果pro*c得人来说应该不难,但是我总是想不通,希望大家能给我个能让我明白的答案,谢谢
所以E什么都不是.
#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);
}