请教一个proc连接oracle时使用at_link的问题 在使用proc连接oracle时,如果不使用at_link,直接连接默认数据库,是可以连接上的可是只要加上at_link参数,就出现连接超时问题,本地的数据库也一样请问大家如何在proc中连接远程数据库的? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 test.sq的代码如下:EXEC SQL INCLUDE sqlca;EXEC SQL BEGIN DECLARE SECTION;char db_link_name[10];EXEC SQL END DECLARE SECTION; void sqlerror(){ EXEC SQL WHENEVER SQLERROR CONTINUE; printf("\noracle error detected:\n"); printf("%.70s\n", sqlca.sqlerrm.sqlerrmc); EXEC SQL ROLLBACK RELEASE; exit(1);} int connect_oracle(const char *name, const char *pass){ EXEC SQL BEGIN DECLARE SECTION; VARCHAR username[20]; VARCHAR password[20]; VARCHAR db_name[20]; int id; VARCHAR txt[10]; EXEC SQL END DECLARE SECTION; strcpy(username.arr, name); username.len = strlen(name); strcpy(password.arr, pass); password.len = strlen(pass); strcpy(db_name.arr, "test"); db_name.len = strlen("test"); strcpy(db_link_name, "lgw"); EXEC SQL WHENEVER SQLERROR GOTO sqlerr; //EXEC SQL CONNECT :username IDENTIFIED BY :password; EXEC SQL CONNECT :username IDENTIFIED BY :password AT :db_link_name USING :db_name; return 0;sqlerr: sqlerror(); return -1;} int db_insert(){ EXEC SQL BEGIN DECLARE SECTION; int id; VARCHAR txt[10]; EXEC SQL END DECLARE SECTION; EXEC SQL WHENEVER SQLERROR DO sqlerror(); id = 4; strcpy(txt.arr, "北京"); txt.len = strlen("北京"); EXEC SQL INSERT INTO TEST (A, B) VALUES (:id, :txt); EXEC SQL COMMIT WORK;} int db_finish(){ EXEC SQL COMMIT WORK RELEASE;}main.c是这样的#include "db.h" int main(int argc, char *argv[]){ if (argc < 3) { printf("usage: %s username password\n", argv[0]); return 0; } if (connect_oracle(argv[1], argv[2]) < 0) { printf("connect oracle failed\n"); return 0; } else { db_insert(); db_finish(); } return 0;}程序运行时报的错误如下:oracle error detected:ORA-12170: TNS:Connect timeout occurred oracle 问题 急!! 用Oracle9i Jdeveloper已经连通数据库服务器,看见表了,可为什么在写的jsp页面中的查询数据库操作报错呢? proc编程问题 Access导入到Oracle11g,ODBC配置问题 group by后提取数据问题 imp 报错啊,,,大虾们,快来帮帮我啊~~~~!!!!!!!!!!!! 调用存储过程时出错: 必须说明标识符 安装8.17最后时到了启动net8监听服务时停止了 过程报错,解决 问个简单问题,如何格式化的datetime字段? 为啥客户端是oracle10g可以上传而oracle8.17就上传不了blob字段 oracle查询格式转换
EXEC SQL INCLUDE sqlca;
EXEC SQL BEGIN DECLARE SECTION;
char db_link_name[10];
EXEC SQL END DECLARE SECTION;
void sqlerror()
{
EXEC SQL WHENEVER SQLERROR CONTINUE;
printf("\noracle error detected:\n");
printf("%.70s\n", sqlca.sqlerrm.sqlerrmc);
EXEC SQL ROLLBACK RELEASE;
exit(1);
}
int connect_oracle(const char *name, const char *pass)
{
EXEC SQL BEGIN DECLARE SECTION;
VARCHAR username[20];
VARCHAR password[20];
VARCHAR db_name[20];
int id;
VARCHAR txt[10];
EXEC SQL END DECLARE SECTION;
strcpy(username.arr, name);
username.len = strlen(name);
strcpy(password.arr, pass);
password.len = strlen(pass);
strcpy(db_name.arr, "test");
db_name.len = strlen("test");
strcpy(db_link_name, "lgw");
EXEC SQL WHENEVER SQLERROR GOTO sqlerr;
//EXEC SQL CONNECT :username IDENTIFIED BY :password;
EXEC SQL CONNECT :username IDENTIFIED BY :password AT :db_link_name USING :db_name;
return 0;
sqlerr:
sqlerror();
return -1;
}
int db_insert()
{
EXEC SQL BEGIN DECLARE SECTION;
int id;
VARCHAR txt[10];
EXEC SQL END DECLARE SECTION;
EXEC SQL WHENEVER SQLERROR DO sqlerror();
id = 4;
strcpy(txt.arr, "北京");
txt.len = strlen("北京");
EXEC SQL INSERT INTO TEST (A, B) VALUES (:id, :txt);
EXEC SQL COMMIT WORK;
}
int db_finish()
{
EXEC SQL COMMIT WORK RELEASE;
}main.c是这样的#include "db.h"
int main(int argc, char *argv[])
{
if (argc < 3) {
printf("usage: %s username password\n", argv[0]);
return 0;
}
if (connect_oracle(argv[1], argv[2]) < 0) {
printf("connect oracle failed\n");
return 0;
} else {
db_insert();
db_finish();
}
return 0;
}程序运行时报的错误如下:
oracle error detected:
ORA-12170: TNS:Connect timeout occurred