PROC是ORACLE数据库提供的编程接口.doc

PROC是ORACLE数据库提供的编程接口.doc

ID:50829621

大小:128.50 KB

页数:10页

时间:2020-03-15

PROC是ORACLE数据库提供的编程接口.doc_第1页
PROC是ORACLE数据库提供的编程接口.doc_第2页
PROC是ORACLE数据库提供的编程接口.doc_第3页
PROC是ORACLE数据库提供的编程接口.doc_第4页
PROC是ORACLE数据库提供的编程接口.doc_第5页
资源描述:

《PROC是ORACLE数据库提供的编程接口.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、PROC是ORACLE数据库提供的编程接口之一,其应用十分的广泛,本文通过一个具体的例子,介绍PROC编程的一些经验及应注意的地方。例子程序:#include#include#include#include#includeEXECSQLINCLUDEsqlca;/*RELEASE_CURSOR=YES使PROC在执行完后释放与嵌入SQL有关资源*/EXECORACLEOPTION(RELEASE_CURSOR=YES);EXECSQLBEGINDECLARESECTION;v

2、archarvc_user[20];longal_empno=0;charac_ename[11]="";charac_hiredate[20]="";doubleaf_sal=0;EXECSQLVARac_enameISSTRING(11);EXECSQLVARac_hiredateISSTRING(20);EXECSQLENDDECLARESECTION;/*错误处理函数*/voidsql_error(char*msg){printf("%s,%ld,%s",msg,sqlca.sqlcode,(char*)sqlca.sqlerrm.sqlerrmc);E

3、XECSQLROLLBACKRELEASE;exit(-1);}main(){EXECSQLWHENEVERSQLERRORDOsql_error("ORACLEERROR:");/*连接数据库*/strcpy(vc_user.arr,"scott/tiger@DEMO");vc_user.len=16;execsqlconnect:vc_user;EXECSQLDECLAREcur_empCURSORFORSELECTEMPNO,ENAME,to_char(HIREDATE,'yyyy/mm/ddhh24:mi:ss'),SALFROMEMP;EXECSQLOPENc

4、ur_emp;while(1){al_empno=0;strcpy(ac_ename,"");strcpy(ac_hiredate,"");af_sal=0;EXECSQLFETCHcur_empINTO:al_empno,:ac_ename:ename_ind,:ac_hiredate:hiredate_ind,:af_sal:sal_ind;if(sqlca.sqlcode==1403){break;}printf("empno=%ld,ename=%s,hiredate=%s,sal=%lf",al_empno,ac_ename,ac_hiredate,af_

5、sal);}EXECSQLCLOSEcur_emp;EXECSQLROLLBACKWORKRELEASE;}1、宿主变量的声明在PROC中,在SQL语句中用到的变量称为宿主变量。他们应在EXECSQLBEGINDECLARESECTION;与EXECSQLEDNDECLARESECTION;之间声明,如上面所示.在声明宿主变量时应注意以下几点:(1)在数据库表中定义为VARCHAR2,VARCHAR,CHAR的字段,在PROC中可声明为CHAR,但长度应为它们在表中定义的长度加1,因为PROC中CHAR型变量用做结尾。如:ENAME在表中的定义为enamevarch

6、ar2(10),在PROC中可定义为:EXECSQLBEGINDECLARESECTION;charename[11];EXECSQLENDDECLARESECTION;常见错误说明:如果插入的字符串长度大于10,如:EXECSQLINSERTINTOEMP(ENAME)VALUES('12345678901');会出现以下错误:error:ORA-01480:STR赋值变量缺少空后缀。如果定义为:EXECSQLBEGINDECLARESECTION;charename[15];EXECSQLENDDECLARESECTION;当插入的字符串长度大于10,小于15时,如

7、:EXECSQLINSERTINTOEMP(ENAME)VALUES('12345678901');会出现以下错误:error:ORA-01401:插入的值对于列过大。当插入的字符串长度大于15,如:EXECSQLINSERTINTOEMP(ENAME)VALUES('12345678901234');会出现以下错误:error:ORA-01401:STR赋值变量缺少空后缀。(2)从SQL语句中取字段的值到宿主变量中时,PROC不会自动给宿主变量去掉右空格。而是以在DECLARESECTION中定义的长度为准(与表中定义的无关)不足补右空

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。