Pro*c在oracle10g上的第一个入门测试程序
2007-05-20 19:11
633 查看
Pro*c在oracle10g上的第一个入门测试程序
开发运行环境
oracle10g 10.2.0 fedora core 6.0
oracle10g 10.2.0 fedora core 5.0
windows xp sp2
gcc
proc
1 makefile
LIBPATH= -L$(ORACLE_HOME)/lib/
LIBS=-lclntsh `cat $(ORACLE_HOME)/lib/sysliblist` -ldl –lm
CC=gcc
CFLAGS= -o
test:test.pc
proc parse=no iname=test.pc include=$(ORACLE_HOME)/precomp/public
$(CC) $(CFLAGS) $@ $@.c -I$(ORACLE_HOME)/precomp/public -L$(ORACLE_HOME)/lib -lclntsh -lclient8 $(LIBPATH) $(LIBS)
rm tp??????
[align=left]避免PCC-S-02015, unabletoopenincludefile的问题-->parse=no,主要检查$HOME/precomp/admin/pcscfg.cfg 内容如下(多线程问题): [/align]
sys_include=($ORACLE_HOME/precomp/public,/usr/include,/usr/lib/gcc-lib/i386-redh
at-linux/3.2.3/include)
include=用户定义的库头文件目录或者要引用的头文件目录
ltype=short
2 本机程序(应用程序和数据库服务器同一台机)
test.pc
#include <stdio.h>
EXEC SQL INCLUDE SQLCA;
int main(void)
...{
EXEC SQL BEGIN DECLARE SECTION;
VARCHAR user[20],pass[20],tnsname[20];
char ename[10];
int empno;
EXEC SQL END DECLARE SECTION;
int i=0;
strcpy(user.arr,"scott");
user.len=(unsigned short)strlen((char *)user.arr);
strcpy(pass.arr,"tiger");
pass.len=(unsigned short)strlen((char *)pass.arr);
strcpy(tnsname.arr,"MYDATA");
tnsname.len=(unsigned short)strlen((char *)tnsname.arr);
EXEC SQL CONNECT :user IDENTIFIED BY :pass USING :tnsname;
if( sqlca.sqlcode < 0)
...{
printf(“ connect error ”);
EXEC SQL commit work release;
return -1;
}
EXEC SQL declare emp_cursor cursor for
select empno,ename from scott.emp;
if( sqlca.sqlcode < 0)
...{
printf(“ declare error ”);
EXEC SQL commit work release;
return -1;
}
EXEC SQL open emp_cursor;
if( sqlca.sqlcode < 0)
...{
printf(“ open error ”);
EXEC SQL commit work release;
return -1;
}
EXEC SQL WHENEVER NOT FOUND DO break;
while(1)
...{
EXEC SQL fetch emp_cursor into :empno,:ename;
if( sqlca.sqlcode < 0)
...{
printf(“ fetch error:[%s] ”, sqlca.sqlerrm.sqlerrmc);;
EXEC SQL commit work release;
return -1;
}
printf("The empno %d's name is %s ",empno,ename);
i=i+1;
}
printf("Yeah!We get %d records ",i);
EXEC SQL close emp_cursor;
if( sqlca.sqlcode < 0)
...{
printf(“ close error ”);
EXEC SQL commit work release;
return -1;
}
EXEC SQL commit work release;
return 0;
}
[align=left] [/align]
[align=left] tnsnames.ora[/align]
[align=left] [/align]
[align=left]# Generated by Oracle configuration tools.[/align]
[align=left] [/align]
MYDATA =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = zhang.sirius.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = MyData)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
3 c/s结构
Client(fc5.0)应用程序如上
将strcpy(tnsname.arr,"MYDATA");
改为strcpy(tnsname.arr, “MYDATA_FERTILAND”)
此时修改客户端的$ORACLE_HOME/network/admin/tnsnames.ora
Makefile沿用上面的
# Generated by Oracle configuration tools.
MYDATA =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = zhang.sirius.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = MyData)
)
)
MYDATA_FERTILAND =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = fertiland.sirius.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = MyData)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
4
VC下利用Pro*C开发Oracle接口http://www.linuxmine.com/51925.html
程序参考
http://blog.csdn.net/NinGoo/archive/2005/10/12/501053.aspx 期望没冒犯您,在此谢过.如觉不妥,邮件通知.
开发运行环境
oracle10g 10.2.0 fedora core 6.0
oracle10g 10.2.0 fedora core 5.0
windows xp sp2
gcc
proc
1 makefile
LIBPATH= -L$(ORACLE_HOME)/lib/
LIBS=-lclntsh `cat $(ORACLE_HOME)/lib/sysliblist` -ldl –lm
CC=gcc
CFLAGS= -o
test:test.pc
proc parse=no iname=test.pc include=$(ORACLE_HOME)/precomp/public
$(CC) $(CFLAGS) $@ $@.c -I$(ORACLE_HOME)/precomp/public -L$(ORACLE_HOME)/lib -lclntsh -lclient8 $(LIBPATH) $(LIBS)
rm tp??????
[align=left]避免PCC-S-02015, unabletoopenincludefile的问题-->parse=no,主要检查$HOME/precomp/admin/pcscfg.cfg 内容如下(多线程问题): [/align]
sys_include=($ORACLE_HOME/precomp/public,/usr/include,/usr/lib/gcc-lib/i386-redh
at-linux/3.2.3/include)
include=用户定义的库头文件目录或者要引用的头文件目录
ltype=short
2 本机程序(应用程序和数据库服务器同一台机)
test.pc
#include <stdio.h>
EXEC SQL INCLUDE SQLCA;
int main(void)
...{
EXEC SQL BEGIN DECLARE SECTION;
VARCHAR user[20],pass[20],tnsname[20];
char ename[10];
int empno;
EXEC SQL END DECLARE SECTION;
int i=0;
strcpy(user.arr,"scott");
user.len=(unsigned short)strlen((char *)user.arr);
strcpy(pass.arr,"tiger");
pass.len=(unsigned short)strlen((char *)pass.arr);
strcpy(tnsname.arr,"MYDATA");
tnsname.len=(unsigned short)strlen((char *)tnsname.arr);
EXEC SQL CONNECT :user IDENTIFIED BY :pass USING :tnsname;
if( sqlca.sqlcode < 0)
...{
printf(“ connect error ”);
EXEC SQL commit work release;
return -1;
}
EXEC SQL declare emp_cursor cursor for
select empno,ename from scott.emp;
if( sqlca.sqlcode < 0)
...{
printf(“ declare error ”);
EXEC SQL commit work release;
return -1;
}
EXEC SQL open emp_cursor;
if( sqlca.sqlcode < 0)
...{
printf(“ open error ”);
EXEC SQL commit work release;
return -1;
}
EXEC SQL WHENEVER NOT FOUND DO break;
while(1)
...{
EXEC SQL fetch emp_cursor into :empno,:ename;
if( sqlca.sqlcode < 0)
...{
printf(“ fetch error:[%s] ”, sqlca.sqlerrm.sqlerrmc);;
EXEC SQL commit work release;
return -1;
}
printf("The empno %d's name is %s ",empno,ename);
i=i+1;
}
printf("Yeah!We get %d records ",i);
EXEC SQL close emp_cursor;
if( sqlca.sqlcode < 0)
...{
printf(“ close error ”);
EXEC SQL commit work release;
return -1;
}
EXEC SQL commit work release;
return 0;
}
[align=left] [/align]
[align=left] tnsnames.ora[/align]
[align=left] [/align]
[align=left]# Generated by Oracle configuration tools.[/align]
[align=left] [/align]
MYDATA =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = zhang.sirius.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = MyData)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
3 c/s结构
Client(fc5.0)应用程序如上
将strcpy(tnsname.arr,"MYDATA");
改为strcpy(tnsname.arr, “MYDATA_FERTILAND”)
此时修改客户端的$ORACLE_HOME/network/admin/tnsnames.ora
Makefile沿用上面的
# Generated by Oracle configuration tools.
MYDATA =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = zhang.sirius.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = MyData)
)
)
MYDATA_FERTILAND =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = fertiland.sirius.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = MyData)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
4
VC下利用Pro*C开发Oracle接口http://www.linuxmine.com/51925.html
程序参考
http://blog.csdn.net/NinGoo/archive/2005/10/12/501053.aspx 期望没冒犯您,在此谢过.如觉不妥,邮件通知.
相关文章推荐
- 【Asp.net入门05】第一个ASP.NET 应用程序-测试Asp.net程序
- [原]VS2012入门图文教程——第一个程序Hello World
- 我的第一个vb实例--红楼梦测试小程序
- Junit初级编码(一)第一个Junit测试程序
- Apache Thrift入门(安装、测试与java程序编写)
- 编译第一个opencv测试程序
- Micro Python 入门教程---第一个Micro Python 程序
- JavaSE第一讲:JavaSE入门、JDK的下载与安装、第一个Java程序、Java程序的编译与执行
- JavaSE第一讲:JavaSE入门、JDK的下载与安装、第一个Java程序、Java程序的编译与执行
- JavaSE第一讲:JavaSE入门、JDK的下载与安装、第一个Java程序、Java程序的编译与执行
- Remoting系列(二)----建立第一个入门程序
- Mahout学习之Mahout简介、安装、配置、入门程序测试
- Hibernate入门02 - 第一个Hibernate程序
- 【springboot 入门篇】第1篇 第一个spring-boot程序(多种搭建方式)
- 【 D3.js 入门系列 — 1 】 第一个程序 HelloWorld
- [PyQt]第一个测试程序
- 2013 duilib入门简明教程 -- 第一个程序 Hello World(3)
- Mahout学习之Mahout简介、安装、配置、入门程序测试
- 【OpenCV入门指南】第一个OpenCV程序
- Java入门学习-理解什么是JRE和JDK,然后搭建JAVA开发环境,用eclipse写出第一个helloworld程序