版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Oracle Pro*C 编程1引编写目编写背参考资Oracle Pro*C 编程1引编写目编写背参考资23Pro*C简例编译过Pro*C头文件和库文Oracle预编译选项配置文件4Pro*C语法结嵌入SQL语句在程序中的标志换程序结嵌入PL/SQL大小嵌入的SQL语句分宿主变伪数据类注换WHENEVER语句5动态Oracle方动态SQL语句的处理过Oracle使用动态SQL的四种方ANSI方使用ANSI方法的一些注意事ANSI方法和Oracle方法的不ANSI处理方法对动态SQL语句的处理步程序举第 2 20 Oracle Pro*C 编程1引 的Informix, 现拟向Oracle2Pr
2、o*C在ORACLE 数据库, 这些工具有Oracle Pro*C 编程1引 的Informix, 现拟向Oracle2Pro*C在ORACLE 数据库, 这些工具有等利用在第三代语言内嵌入的 SQL 语言或 ORACLE 库函数调用来Pro*C就属于第三种开发工具之一,它把过程化语言C和非过程化语言SQL最完入、修改和删除数据库表中的行, 还可以实现事务的提交和回滚。第 3 20 序名作发布日期1Oracle数据库高级应用2 3Oracle 培Oracle Pro*C 编程3预编译与编译3.1 3.2 $procle1.pc$ccc.o$ccOracle Pro*C 编程3预编译与编译3.1
3、 3.2 $procle1.pc$ccc.o$ccL$ORACLE_HOME/liblclntshole1$第 4 20 允许自动ops$ 帐SQL2OCI。Oracle Pro*C 编程第 5 20 正关闭所COMMIT 游C 编译器支持的字符集类C+ 文件名后Oracle Pro*C 编程第 5 20 正关闭所COMMIT 游C 编译器支持的字符集类C+ 文件名后#defineSQLCODEsqlca.sqlcode 设置高速缓存中pin 持续Oracle ANSI 动态SQL 语ANSI FIPS 标志不符合用#line 指令添加到生成的代码代码符Oracle ANSI 规控制NLS 字
4、符语义的实现方控制ORACA 的使控制进行语法分SQL 代游标OPEN 期间编译时SQL 校验总Oracle ANSI 类型代码用于动态允许在没有指示变量的情况下进行Oracle Pro*C 编程4Pro*C4.2 4.3 Oracle Pro*C 编程4Pro*C4.2 4.3 ORACLE库做好了准备。应用程序体基本上由 Pro*C 的 SQL:描述部应用程序首SQL 通信应用程序4.4InformixOraclePro*C 的连接过程:f(Nowwewillconnect toOraclef(nPleaseinputyour 第 6 20 EXECSQLBEGINDECLAREEXECS
5、QLENDDECLAREEXECSQLINCLUDEEXECSQLCONNECT:IDENTIFIEDBY:SQL用户名/dbname 连接允许使用隐式varchar 结Oracle Pro*C 编程f(nPleaseinputyourEXECSQLWHENEVER OTOEXECSQLCONNECT:usernameIDENTIFIEDBYf(ConnectreturnOracle Pro*C 编程f(nPleaseinputyourEXECSQLWHENEVER OTOEXECSQLCONNECT:usernameIDENTIFIEDBYf(Connectreturnreturn -4.5
6、 PL/SQLEXECSQLEXECUTEEND-EXEC4.6 4.7 嵌入的SQL第 7 20 BEGINDECLAREENDDECLAREOracle Pro*C 编程按照 ANSI 标准, 只有在 Pro*C 预编译程序的宿主变区的变量SECTION才能做为宿主变Oracle Pro*C 编程按照 ANSI 标准, 只有在 Pro*C 预编译程序的宿主变区的变量SECTION才能做为宿主变量。区域为 EXECSQLEXECSQLENDDECLARESECTIONb. OracleOracleANSI的SQLPL/SQL区别于 Oracle 数据库对象名称。 但在 C 语句在使用这些变量
7、时, 则不能加, 4.9p/admin第 8 20 CONNECT,CLOSE,ALLOCATE,FREE, CREATE, ALTER, DROP, GRANT, REVOKE, AUDIT, NOAUDIT, CONTEXT, ENABLE THREADS, RENAME, YZE,INSERT,UPDATE,DELETE,SELECT, COMMIT, ROLLBACK, SAVEPODESCRIBE,EXECUTE,ALTER,SETOracle Pro*C 编程4.10 4.11 :Oracle Pro*C 编程4.10 4.11 :在4.12 换行4.13 4.14 OracleO
8、racle 使用两种游标: 显式游标和隐式游标. 不管语句返回多少条,Oracle为每条使用的SQL 语句隐式地定义一个游标. Oracle 为每个DELETE , INSERT 等SQL游标. 并使用显式游标处理SELECT . CURSOR(3)FETCH(4)CLOSE A. EXECSQLDECLARE 游标名CORSORSELECT 列 FROM 表 EXECSQLDECLARECSOR,CURSORFOR SELECT ENAME , JOB, SALFROM数据库中返回多行,这些行就是 CURSOR 的一个活动区域。第 9 20 Oracle Pro*C 编程B. 在定义游标之后
9、应用程序在使用游标变量之前, ALLOCATE语句申请游标, 也就是为游标变量分配内存区域, ALLOCATE Oracle Pro*C 编程B. 在定义游标之后应用程序在使用游标变量之前, ALLOCATE语句申请游标, 也就是为游标变量分配内存区域, ALLOCATE 语法格式为:C. 的主变量。打开游标的语句是:EXEC SQL OPEN 游标名:D. EXECSQLFETCH游标名:第 10 20 Oracle Pro*C 编程FETCH语句每执行一次,从当前行或当前组取数据一次,下一行或下一FETCHSQLCA(Oracle Pro*C 编程FETCH语句每执行一次,从当前行或当前组
10、取数据一次,下一行或下一FETCHSQLCA(=1403若希望此游标再操作, 必须先关闭再打开它。 EXECSQLCLOSE EXECSQLCLOSE CLOSE 语句在关闭游标变量时, 游标变量所点用的内存. 所以, 量关闭之后应用程序可以重新打开游标变量, 实现各种游标操作. 经所点用的内存. 方法如下EXECSQLFREE4.15 WHENEVER第 11 20 Oracle Pro*C 编程SQLWHENEVER 语句的语法格式为:EXECSQLWHENEVEREXECSQLWHENEVERSQLERRORDOOracle Pro*C 编程SQLWHENEVER 语句的语法格式为:EX
11、ECSQLWHENEVEREXECSQLWHENEVERSQLERRORDONOT FOUND和 CONTINUE 和区别).4.16 Pro*CCOMMIT,ROLLBACK,和SET与 SQL 语句相SQLCOMMIT 和ROLLBACKRELEASE OracleRELEASECOMMIT5 构造出来(也就是说动态 SQL 语句在程序编译时语句的选择列表和确定, 变量数据大于0)。 这种在程序执行临时生SQLSQL 语句. 利用动SQL编写 Pro*C 程序的方法叫动态 SQL 技术.SQL 语句的文本.第 12 20 Oracle Pro*C 编程下面先说 Oracle 自己的方法.5
12、.1 OracleOracle Pro*C 编程下面先说 Oracle 自己的方法.5.1 Oracle动态 SQL 语句的处理过程为 SQL 语句结合宿主变在执行语句过程中, 数据,式将数据写入这此变量中。执行SQL 语句, 实现数据库操作。宿主变量地址, 5.1.2 OracleSQLOracle 提供了四种处理动态 SQL 的方法, 这四种方法从一到四依次变得功能上说也是依次包含关系, 即前法实现有关这四种方法的详细介绍请参考相关手册和 DEMO 程序.a. 方法一这种方法只能执行非查询语句, 且在非查询动态 SQL 语句内不能包含输入宿主变行时, Oracle 需要对语句进行重新解释。
13、strcpy(str_sql,“DELETEFROMtest001WHERE第 13 20 Oracle Pro*C 编程EXECSQLEXECUTEIMMEDIATE这种方法也只能用于执行非查询语句, 并且允Oracle Pro*C 编程EXECSQLEXECUTEIMMEDIATE这种方法也只能用于执行非查询语句, 并且允许非查询动态 SQL 语句内包含输入SQLOracleSQL每次执行时重新解释 SQL 语句。Otest001valuesEXECSQLPREPAREtestFROMEXECSQLEXECUTEtestUSING:uname,这种方法可以执行包括查询语句在内的动态 SQL
14、 语句, 但它要求在预编译时刻动SQLSQLSQL#实际就是把要执行的动态语句调入内存, 以SELECTname,address,sexFROMtest001); select_stmt FROM :sql_stmt;c1CURSORFOR OPENWHENEVERNOTFOUNDDO 第 14 20 Oracle Pro*C 编程EXECSQLFETCHO:Name,:address,Name,Oracle Pro*C 编程EXECSQLFETCHO:Name,:address,Name,address, EXECSQLCLOSESQL SQL 语句。 这种方式对动态 SQL 语句的限制最小
15、, 它不要求在预编译时确定动动态 SQL 语句内的选择列表项数,库占位符数量以及宿主变量数据类型, 这些描述信息, 从而使应用程序能够在运行时刻处理这种类型的动态 SQL 语句。SQLDA:调用 PREPARE 语句准备宿主变量字符串中的动态语句;位符数据量, 即N 元素;DESCRIBE第 15 20 Oracle Pro*C 编程5.2 ANSI5.2.1 ANSIPro*CANSI必须将DYNAMIC 预编译选项值设置为 Oracle Pro*C 编程5.2 ANSI5.2.1 ANSIPro*CANSI必须将DYNAMIC 预编译选项值设置为 5.2.2 ANSIOracleOracl
16、eDML和。5.2.3 ANSISQL#这一步实际上是对SQL语句进行语法分析, 检查#目的动态SQL 语句中的输入变量和输SETDESCRIPTOR第 16 20 Oracle Pro*C 编程#defineMAX_ITEMSOracle Pro*C 编程#defineMAX_ITEMS #definecharcharvoidchar sql_stmt1024; jmp_bufjmp_continue; void main( )shortsif (connect()!=0)EXECSQLWHENEVERSQLERRORDO第 17 20 Oracle Pro*C 编程EXECSQL ALLO
17、CATEDESCRIPTORALLOCATEDESCRIPTOREXEC PREPAREmystmtFROMDECLAREOracle Pro*C 编程EXECSQL ALLOCATEDESCRIPTORALLOCATEDESCRIPTOREXEC PREPAREmystmtFROMDECLARECCURSORFORDESCRIBEINPUTmystmtUSINGDESCRIPTORf(nStartofopenSQLOPENCUSINGDESCRIPTORf(nEndofopenEXECSQLCLOSEputs(nGoodDEALLOCATE DESCRIPTOR InDesc; DEALLO
18、CATEDESCRIPTOROutDesc; WHENEVER SQLERROR CONTINUE; COMMIT WORK RELEASE;WHENEVERSQLERRORDO以上主函数中, connect()函数见本手册前面部分。 voidsshort chardataBUF_LEN,第 18 20 Oracle Pro*C 编程EXECSQLDESCRIBEOUTPUTmystmtUSINGDESCRIPTOROutDesc; EXEC SQL GET DESCRIPTOR OutDesc :col_num=COUNT;f(nSorry,ThemaxcolumnOracle Pro*C 编程EXECSQLDESCRIBEOUTPUTmystmtUSINGDESCRIPTOROutDesc; EXEC SQL GET DESCRIPTOR OutDesc :col_num=COUNT;f(nSorry,ThemaxcolumnEXECSQLGETDESCRIPTOROu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教科版八年级物理上册《6.2物质的密度》同步测试题及答案
- 北师大版二年级语文上册表格式教案
- 景区保安部管理规范
- 能源大数据分析理论与实践 课件 7.能源系统
- 2024高中地理第五章区际联系与区域协调发展第一节资源的跨区域调配-以我国西气东输为例练习含解析新人教版必修3
- 2024高中生物专题5DNA和蛋白质技术课题1DNA的粗提取与鉴定课堂演练含解析新人教版选修1
- 2024高中语文第三课神奇的汉字第4节咬文嚼字-消灭错别字练习含解析新人教版选修语言文字应用
- 2024高考化学一轮复习第3章金属及其化合物知识拓展专题侯德榜制碱法精练含解析
- 2024高考化学一轮复习第二部分排查练十一重要的有机化合物含解析
- 2024高考地理一轮复习第一章地球与地图第三讲地理信息技术的应用学案
- 《交通规划原理》课件
- (完整版)四年级口算题大全100道
- 警察急救能力培训课件模板
- 倍加福-KFU8-UFC-信号隔离或转换模块中文操作指导
- 2024年意识形态工作专题会议记录【6篇】
- 河北省唐山市2023-2024学年高一上学期期末考试数学试题(含答案解析)
- hdpe土工膜施工工艺
- 五年级数学(小数四则混合运算)计算题专项练习及答案
- 急救药品的序号及作用课件
- 《比特币完整介绍》课件
- 当食物成为抚慰:善待自己重塑大脑告别情绪性进食
评论
0/150
提交评论