已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,说明SQL通讯区,在程序头加上 EXEC SQL INCLUDE SQLCA; 其中包括许多变量,如返回码等。 与SQL连接语句(CONNECT) EXEC SQL CONNECT :用户名变量 IDENTIFIED BY :口令变量 或 EXEC SQL CONNECT :用户名变量 /:口令变量,2,伪类型VARCHAR,只有DECLARE部分引用,可认为是C的扩充类型。描述如下 EXEC SQL BEGIN DECLARE SECTION; VARCHAR job20; EXEC SQL END DECLARE SECTION; 等价于: Struct unsigned/*2bytes*/ short int len; unsigned char arr40 job;,3,在ORACLE上注册和注销,说明:这是以SCOTT/TIGER为用户名和口令登陆进入数据库的PRO*C程序例。 #include EXEC SQL BEGIN DECLARE SECTION; VARCHAR uid20; VARCHAR pwd20; EXEC SQL END DECLARE SECTION; EXEC SQL INCLUDE SQLCA;,4,在ORACLE上注册和注销,Main() strcpy(uid.arr,”SCOTT”); uid.len=strlen(uid.arr); strcpy(pwd.arr,”TIGER”); pwd.len=strlen(pwd.arr); EXEC SQL CONNECT :uid IDENTIFIED BY :pwd Printf(“connect ed to oracle user%sn”,uid.arr); EXEC SQL COMMIT WORK RELEASE; Exit(0);,5,创建一个表,#include EXEC SQL BEGIN DECLARE SECTION; VARCHAR uid20; VARCHAR pwd20; EXEC SQL END DECLARE SECTION; EXEC SQL INCLUDE SQLCA; Main() strcpy(uid.arr,”SCOTT”); uid.len=strlen(uid.arr); strcpy(pwd.arr,”TIGER”); pwd.len=strlen(pwd.arr);,6,EXEC SQL CONNECT :uid IDENTIFIED BY :pwd Printf(“connected to oracle as user%sn”,uid.arr); EXEC SQL CREATE TABLE emp (empno number, ename char(15), job char(10), mgr number, hiredate date, sal number, deptno number); Printf(“table emp created! n”); EXEC SQL COMMIT WORK RELEASE; Exit(0);,7,1.EXECUTE IMMEDIATE 预编译任何SQL语句(除SELECT)并执行之。 SQL语句可以是文字量,但它可以不包括任何主变量(既不包括输入,也不包括输出主变量) EXECUTE IMMEDIATE只能带一个参数,执行一次 2.PREPARE 和EXECUTE语句 预编译任何SQL语句(除SELECT)并执行之。语句可以包括输入或输出主变量。它的SQL语句仅被语法分析一次,可带多个参数,对任何SQL语句可多次使用,但必须保证变量的数目和相应的数据类型必须相同。 PREPARE完成:预编译(分析)该SQL语句,并为其提供一个语句名。 EXECUTE执行刚预编译的语句,使用USING提供的值。,动态SQL语句 四种方式:,8,3. PREPARE 和FETCH语句 允许使用SELECT语句, 语句可以包括输入或输出主变量。这种方式的顺序是PREPARE ,DECLEAR,OPEN和FETCH.变量的数目和相应的数据类型必须相同。 4.使用赋值和定义描述符 允许使用任何SQL语句,包括查询结果为单记录或多记录的SELECT语句。,9,1.EXECUTE IMMEDIATE 立即执行方式,A.SQL语句不能是SELECT语句,只能是U,D,I语句 B. SQL语句不能包含主变量 例:EXEC SQL BEGIN DECLARE SECTION; VARCHAR dstring80; EXEC SQL END DECLARE SECTION; scanf(“%s”,dstring); EXEC SQL EXECUTE IMMEDIATE :dstring;,10,EXECUTE IMMEDIATE 实例,这是一个提交修改语句的pro*c实例。 #include EXEC SQL BEGIN DECLARE SECTION; VARCHAR uid20; VARCHAR pwd20; char select132; EXEC SQL END DECLARE SECTION; EXEC SQL INCLUDE SQLCA; Main() char where80; int scode;,11,strcpy(uid.arr,”SCOTT”); uid.len=strlen(uid.arr); strcpy(pwd.arr,”TIGER”); pwd.len=strlen(pwd.arr); EXEC SQL WHENEVER SQLERROR STOP; EXEC SQL CONNECT :uid IDENTIFIED BY :pwd Printf(“connected to oracle as user%sn”,uid.arr); strcpy(select,”UPDATE EMP SET COMM=100 WHERE”); Printf(“please enter where clause for the following:n”); Printf(“%s”,select); Scode=scanf(“%s”,where); If(scode=EOF|scode=0),12,Printf(“invalid entry!n”); exit(1); Strcat(select,where); EXEC SQL EXECUTE IMMEDIATE:select; Printf(“%d records updated.n”,sqlca.sqlerrd2); EXEC SQL WHENEVER SQLERROR CONTINUE; EXEC SQL COMMIT WORK RELEASE; Exit(0); ,13,2. PREPARE 和EXECUTE语句 准备执行方式,A.SQL语句不能是SELECT语句,只能是U,D,I语句 B. SQL语句可包含主变量,可多次使用。 例:要执行delete from emp where empno=:pempno scanf(“%s”,dstring); EXEC SQL PREPARE s1 FROM : dstring; scanf(“%d”, 可以USING :VAR1, :VAR2,14,PREPARE 和EXECUTE实例,这是一个提交修改语句的pro*c实例。 #include EXEC SQL BEGIN DECLARE SECTION; VARCHAR uid20; VARCHAR pwd20; char select132; float comm; EXEC SQL END DECLARE SECTION; EXEC SQL INCLUDE SQLCA; Main() char where80; int scode;,15,strcpy(uid.arr,”SCOTT”); uid.len=strlen(uid.arr); strcpy(pwd.arr,”TIGER”); pwd.len=strlen(pwd.arr); EXEC SQL WHENEVER SQLERROR GOTO errpt; EXEC SQL CONNECT :uid IDENTIFIED BY :pwd Printf(“connected to oracle as user%sn”,uid.arr); strcpy(select,”UPDATE EMP SET COMM=:comm WHERE”); Printf(“please enter where clause for the following:n”); Printf(“%s”,select); Scode=scanf(“%s”,where); If(scode=EOF|scode=0),16,Printf(“invalid entry!n”); exit(1); Strcat(select,where); EXEC SQL PREPARE S1 FROM :select; Printf(“please enter commission:”); Scanf(“%f”, ,17,3. PREPARE 和FETCH语句, 针对SELECT语句 引用方式用以下五步:,A. PREPARE FROM B. DECLARE FOR C.OPEN USING:变量名1, :变量名2, D.FETCH INTO :变量名1, :变量名2, E.CLOSE ,18,PREPARE 和EXECUTE实例,这是一个在查询中使用WHERE语句的pro*c实例。 #include EXEC SQL BEGIN DECLARE SECTION; VARCHAR uid20; VARCHAR pwd20; char select132; float sal; int depno; char ename10 EXEC SQL END DECLARE SECTION; EXEC SQL INCLUDE SQLCA; Main() char where80; int scode; int i; strcpy(uid.arr,”SCOTT”); uid.len=strlen(uid.arr); strcpy(pwd.arr,”TIGER”); pwd.len=strlen(pwd.arr);,19,EXEC SQL WHENEVER SQLERROR GOTO errpt; EXEC SQL CONNECT :uid IDENTIFIED BY :pwd Printf(“connected to oracle as user%sn”,uid.arr); strcpy(select,”select ename,sal from EMP”); Printf(“please enter where clause for the following:n”); Printf(“%s”,select); Scode=scanf(“%s”,where); If(scode=EOF|scode=0) Printf(“invalid entry!n”); exit(1); Strcat(select,where); EXEC SQL PREPARE S1 FROM :select;,20,EXEC SQL DECLARE C1 CURSOR FOR S1; EXEC SQL OPEN C1; EXEC SQL WHENEVER NOT FOUND GOTO endloop; For (i=1;i+) EXEC SQ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工厂污染天气应急预案范本
- 小学平房危房应急预案
- 2024安徽宣城市人民医院(皖南医学院附属宣城医院)第二批次招聘笔试模拟试题及答案解析
- 小学教师期末工作总结
- 高二学生期末个人总结(6篇)
- 销售人员个人年终工作总结(14篇)
- 酒店采购个人工作总结范文(14篇)
- 酒店前台部门员工的半年自我总结与评价(9篇)
- 转正申请工作总结范文(30篇)
- 财务经理年终述职报告(6篇)
- 学生矛盾纠纷排查登记表
- 人音版(2019)高中 必修《音乐鉴赏》 5.9 独唱曲 课件(19张PPT)
- 课件:人教部编版 高中语文必修上册 《心有一团火温暖众人心》
- 施耐德电涌保护器spd合格证
- 精神疾病专科临床医疗质量控制与评价标准
- 护理交接班制度完整版课件
- 历史故事成语(按朝代划分)
- 全媒体运营师考试备考题库大全【更新版】-共1000多题
- 双重预防体系建设全套文件非煤矿山
- 阿里巴巴国际站现状以及运营方案
- 《环境监测》试卷及答案
评论
0/150
提交评论