欢迎来到天天文库
浏览记录
ID:40563251
大小:58.00 KB
页数:7页
时间:2019-08-04
《ProC程序编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Pro*C程序编程(一)用Pro*C编写程序与在PB中直接用SQL语句类似,在PB中能用的SQL语法在ProC中同样适用,数据库能用的函数也都可以使用,所有的SQL语句都应符合Oracle的语法,只是多一些C语言中的语法和限制,下面是一个最简单的例子:/*****************************************************************//*程序开始,有一些需要包含的.H文件*/#include#ifdef_WIN32#defineDLLIMPORT__declspec(d
2、llimport)#defineDLLEXPORT__declspec(dllexport)#defineCDECL__cdecl#else#defineDLLIMPORT#defineDLLEXPORT#defineCDECL#endif#defineSQLCA_STORAGE_CLASSextern/*SQL没有记录的返回值*/#defineSQLNOTFOUND1403/*ProC必须在每一个程序中写的语句,SQLCA的大小写必须所有程序一致*/EXECSQLINCLUDESQLCA;EXECORACLEOPTION(RELEAS
3、E_CURSOR=YES);/*该语句可以在Makefile中写*//*有了下面的定义,就不需要进行变量类型的等价了VARISSTRING()*/EXECORACLEOPTION(CHAR_MAP=STRING);/*该语句可以在Makefile中写*/voidmain(){/*声明需要在SQL语句中使用的变量,这些变量在非SQL中也能使用*/EXECSQLBEGINDECLARESECTION;charszCodeName[41]="";/*CHAR变量的长度必须比数据库中大1*//*对VARCHAR类型必须进行等价说明,否则可能有空
4、格,或设置CHAR_MAP=STRING*/EXECSQLVARszCodeNameISSTRING(41);/*指示变量,必须是shortint类型,*/shortintindCodeName=0;/*与EXECSQLBEGINDECLARESECTION;成对使用*/EXECSQLENDDECLARESECTION;/*也可以不需要EXECSQLBEGIN/ENDDECLARESECTION;,在编译上控制*/strcpy(szConnectString,"jifei/jifei@jifei");/*连接数据库*/EXECSQLco
5、nnect:szConnectString;/*或EXECSQLCONNECT:szUserIDENTIFIEDBY:szPasswordusing:szDBString;*/if(sqlca.sqlcode!=0)/*判断SQL语句是否执行成功*/{printf("ConnectError,ErrorMessage:%s",sqlca.sqlerrm.sqlerrmc);exit(0);}EXECSQLselectcode_nameinto:szCodeNamefromCODE_NAMEwhererownum=1;if(sqlca
6、.sqlcode<0)/*判断SQL语句是否执行成功*/{printf("ConnectError,ErrorMessage:%s",sqlca.sqlerrm.sqlerrmc);EXECSQLrollbackworkrelease;exit(0);}if(sqlca.sqlcode==SQLNOTFOUND)/*没有结果,必须用SQLNOTFOUND,不要直接用1403*/{printf("NoDatatoFetch");EXECSQLrollbackworkrelease;exit(0);}printf("Code_Nam
7、e=%s.",szCodeName);/*提交并断开连接*/EXECSQLcommitworkrelease;}/************************************************************/一些基本的用法:1、VARCHAR2型变量的数据定义如果数据库中是varchar2型的字段,在Pro*C中类型定义成charszFieldName[n+1]如果在Makefile文件中的预编译参数中char_map=STRING则不需要进行类型等价,否则需要进行字符类型的等价定义:EXECSQLVAR
8、szFieldNameISSTRING(n+1);如不进行等价,则变量用空格填充。2、判断NULL值的方法在Pro*C中,如某一个字段是NULL值,sqlca.sqlcode是小于0的,所以对可能出现NUL
此文档下载收益归作者所有