- 论坛徽章:
- 0
|
12可用积分
#include <sqlca.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sqlda.h>
#include <sqlcpr.h>
exec sql include sqlca;
exec sql include oraca;
exec oracle option (oraca=yes);
EXEC SQL BEGIN DECLARE SECTION ;
VARCHAR username[20];
varchar password[40];
varchar dbName[20];
EXEC SQL END DECLARE SECTION ;
void sql_error(char *msg)
{
char err_msg[512];
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);
}
void main()
{
strncpy((char *) username.arr, "kf", 20);
username.len =
(unsigned short) strlen((char *) username.arr);
strncpy((char *) password.arr, "kf123", 40);
password.len =
(unsigned short) strlen((char *) password.arr);
strcpy(dbName .arr,"KF20");
dbName .len = strlen(dbName .arr);
EXEC SQL WHENEVER SQLERROR DO sql_error("ORACLE error--\n");
EXEC SQL CONNECT :username IDENTIFIED BY :password USING :dbName;
printf("\nConnected to ORACLE as user: %s\n", username.arr);
EXEC SQL ROLLBACK WORK RELEASE;
exit(EXIT_SUCCESS);
}
编译时出现错误:
"alarm.c", line 708: Error: Too many arguments in call to "sqlorat()".
"alarm.c", line 719: Error: Too many arguments in call to "sqlcxt()".
对应的alarm.c部分为:
693 void sql_error(char *msg)
694 {
695 char err_msg[512];
696 size_t buf_len, msg_len;
697 /* EXEC SQL WHENEVER SQLERROR CONTINUE; */
698
699 printf("\n%s\n", msg);
700
701 buf_len = sizeof (err_msg);
702 sqlglm(err_msg, &buf_len, &msg_len);
703 printf("%.*s\n", msg_len, err_msg);
704
705 /* EXEC SQL ROLLBACK RELEASE; */
706
707 {
708 struct sqlexd sqlstm;
709 sqlorat((void **)0, &sqlctx, &oraca);
710 sqlstm.sqlvsn = 12;
711 sqlstm.arrsiz = 0;
712 sqlstm.sqladtp = &sqladt;
713 sqlstm.sqltdsp = &sqltds;
714 sqlstm.iters = (unsigned int )1;
715 sqlstm.offset = (unsigned int )5;
716 sqlstm.cud = sqlcud0;
717 sqlstm.sqlest = (unsigned char *)&sqlca;
718 sqlstm.sqlety = (unsigned short)256;
719 sqlstm.occurs = (unsigned int )0;
720 sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
721 }
722
723
724 exit(EXIT_FAILURE);
725 }
二楼我贴上Makefile代码 |
|