《数据库管理及应用》课程电子教案(PPT课件)3.06 Dynamic SQL 动态SQL

3.05-7 dynamic SQL(动态SQL) Introduction 应用程序嵌入的$QL完全固定不方便:因分析方面的 意图,指定一些操作条件,有时是必要的。 所以嵌入式SQL中,提供了动态结构$QL语句的功能。 目前SQL标准和大部DBMS均增加了动态SQL功能。 动态SQL分三种类型: execute immediate SQL直接执行SQL SQL with Dynamic parameter带动态参数的SQL Query Dynamic SQL查询类动态SQL
3.05-7 dynamic SQL (动态SQL) 一 Introduction 应用程序嵌入的SQL完全固定不方便:因分析方面的 意图,指定一些操作条件,有时是必要的。 所以嵌入式SQL中,提供了动态结构SQL语句的功能。 目前SQL标准和大部DBMS均增加了动态SQL功能。 动态SQL分三种类型: execute immediate SQL 直接执行SQL SQL with Dynamic parameter 带动态参数的SQL Query Dynamic SQL 查询类动态SQL

二Dynamic SQL executed immediately (直接执行的动态SQL) ●只用于非查询语句:DDL,DM心 应用程序定义一个字符串类型的宿主变量,存 放要执行的$QL语句。 SQL语句固定部分由程序赋值给宿主变量。 可变部分由程序提示,用户输入。 用EXEC SQL EXECUTE IMMEDI ATE语句执行宿主 变量中的SQL语句
二 Dynamic SQL executed immediately (直接执行的动态SQL) ⚫ 只用于非查询语句:DDL,DML ⚫ 应用程序定义一个字符串类型的宿主变量,存 放要执行的SQL语句。 ⚫ SQL语句固定部分由程序赋值给宿主变量。 可变部分由程序提示,用户输入。 ⚫ 用EXEC SQL EXECUTE IMMEDIATE语句执行宿主 变量中的SQL语句

例:从关系STUDENT中删除指定条件的学生记 录。条件存在应用程序变量cond中.由于 cond在语句末尾,其后应加‘;’号 EXEC SQL BEGIN DECLARE SECTION; char Sqlstring[200];/*定义宿主变量*/ EXEC SQL END DECLARE SECTION; /开始行和结束行均为独立语句*/
例:从关系STUDENT中删除指定条件的学生记 录。条件存在应用程序变量cond中. 由于 cond在语句末尾,其后应加‘ ; ’号 · · · EXEC SQL BEGIN DECLARE SECTION; char Sqlstring[200]; /*定义宿主变量*/ EXEC SQL END DECLARE SECTION; /*开始行和结束行均为独立语句*/

char cond [150] /*填入SQL固定部分*/ strcopy (sqlstring,"DELETE FROM STUDENT WHERE ") printf ("Enter Search condition:" scanf ("%s,cond) strcat (sqlstr ing,cond) EXEC SQL EXECUTE IMMEDIATE sqlstr ing;
char cond[150]; /*填入SQL固定部分*/ strcopy(sqlstring,"DELETE FROM STUDENT WHERE "); printf("Enter Search condition:"); scanf("%s,cond); strcat(sqlstring,cond); EXEC SQL EXECUTE IMMEDIATE :sqlstring; · · ·

三带动态参数的动态SQL: ●也只用于非查询语句。 ● 占位器(place holder) 它是一种未定义变量,执行前应用程序提示用 户输入参数,取代占位变量。 ● 仍用删除符合条件的学生的例子。 EXEC SQL BEGIN DECLARE SECTION; Char Sqlstring [200]; int birth-year; EXEC SQL END DECLARE SECTION;
三 带动态参数的动态SQL: ⚫ 也只用于非查询语句。 ⚫ 占位器(place holder) 它是一种未定义变量,执行前应用程序提示用 户输入参数,取代占位变量。 ⚫ 仍用删除符合条件的学生的例子。 EXEC SQL BEGIN DECLARE SECTION; Char Sqlstring[200]; int birth-year; EXEC SQL END DECLARE SECTION;

Strcpy (sqlstring,"DELETE FROM STUDENT WHERE YEAR(BDATE)<=y;" Printf ("Enter birth year for deleting:") scanf ("%d",birth-year) /*用PREPRE语句定义sqlstring中SQL语句为命令 PURGE*/ EXEC SQL PREPARE PURGE FROM sqlstring; /*用birth-year取代y,并执行PURGE*/ EXEC SQL EXECUTE PURGE USING birth-ye
Strcpy (sqlstring,"DELETE FROM STUDENT WHERE YEAR(BDATE)<= :y;") Printf ("Enter birth year for deleting:"); scanf("%d",birth-year); /*用PREPRE语句定义sqlstring中SQL语句为命令 PURGE*/ EXEC SQL PREPARE PURGE FROM :sqlstring; /*用birth-year取代y,并执行PURGE*/ EXEC SQL EXECUTE PURGE USING :birth-year; · · ·

上例中: ●y没有说明, place holder占位器 ●执行中将用户输入的birth-year值取代它。 动态$QL语句中可有多个占位变量,这时 USNG后为宿主变量列表,占位变量依据在语 句中出现先后,从前向后使用USING后的宿主 变量去代
上例中: ⚫ y没有说明, place holder占位器 ⚫ 执行中将用户输入的birth-year值取代它。 ⚫ 动态SQL语句中可有多个占位变量,这时 USING后为宿主变量列表,占位变量依据在语 句中出现先后,从前向后使用USING后的宿主 变量去代

查询类动态$QL: 查询类动态$QL必须返回查询结果。且结果 为一个元组,还是多元组不能在编程时确定。 故动态查询类$QL一律用游标取数。 下边例子,用户输入ORDER BY子句和课号。 ORDER BY子句在语句尾,注意其后必须加 分号。 如需要,整个SQL语句也可动态构成,这给 动态$QL增加了交互能力,有时是很有用处 的
四 查询类动态SQL: ⚫ 查询类动态SQL必须返回查询结果。且结果 为一个元组,还是多元组不能在编程时确定。 故动态查询类SQL一律用游标取数。 ⚫ 下边例子,用户输入ORDER BY子句和课号。 ⚫ ORDER BY 子句在语句尾,注意其后必须加 分号。 ⚫ 如需要,整个SQL语句也可动态构成,这给 动态SQL增加了交互能力,有时是很有用处 的

EXEC SQL BEGIN DECLARE SECTION; char sqlstring [200] char SNO[7]; float GRADE; short GRADEl char GIVENCNO [6] EXEC SQL END DECLAR SECTION; char orderby [150]; strcpy (sql str ing,"SELECT SNO,GRADE FROM SC WHERE CNO=c");
EXEC SQL BEGIN DECLARE SECTION; char sqlstring[200]; char SNO[7]; float GRADE; short GRADEI char GIVENCNO[6]; EXEC SQL END DECLAR SECTION; char orderby[150]; strcpy(sqlstring,"SELECT SNO,GRADE FROM SC WHERE CNO= :c");

/*提示用户输入ORDER BY-子句*/ printf("Enter the ORDER BY clause:") scanf ("%s",orderby) strcat (sql string,orderby) /*提示用户输入要查询的课号*/ printf (Enter the course number:" scanf ("%s",GI VENCNO) EXEC SQL PREPARE query FROM sqlstring; /*声明游标*/ EXEC SQL DECLARE grade-cursor CURSOR FOR query; /*打开游标,取代战位器,执行相应$QL语句*/ EXEC SQL OPEN grade-cursor USING GIVENCNO;
/*提示用户输入ORDER BY子句*/ printf("Enter the ORDER BY clause:"); scanf("%s", orderby); strcat(sqlstring,orderby); /*提示用户输入要查询的课号*/ printf(Enter the course number:"); scanf("%s",GIVENCNO); EXEC SQL PREPARE query FROM :sqlstring; /*声明游标*/ EXEC SQL DECLARE grade-cursor CURSOR FOR query; /*打开游标,取代战位器,执行相应SQL语句*/ EXEC SQL OPEN grade-cursor USING :GIVENCNO;
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《数据库管理及应用》课程电子教案(PPT课件)3.05 Embedded SQL 嵌入式SQL.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)3.04 QL and DML in SQL SQL中的查询语言和现代语言.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)3.03 DDL 数据定义语言.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)3.02 SQL Introduction & DDL SQL 查询语言入门和 DDL)(SQL:结构化查询语言,DDL:数据定义语言.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)3.01 Data Manipulation languages 数据操纵语言.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)2.03 Tuple&Domain Relation Calculus 元组和域关系演算.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)2.02 Relation Calculus 关系运算.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)2.01 data Model of Database 数据库的数据模型.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)1.02 Data Description of real world 真实世界的数据描述.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)1.01 Database 数据库.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)0.0 Development History for Database.ppt
- 沈阳航空航天大学:自动化学院《计算机控制技术》课程教学大纲.pdf
- A-Duplex:Medium Access Control for Efficient Coexistence Between Full-Duplex and Half-Duplex Communications.pdf
- 《电脑编程》教学参考书籍文献(Fortran)FORTRAN常用算法程序集(第二版,共十五章,编著:徐士良).pdf
- 《电脑编程》教学参考书籍文献(JAVA)J2EE指南(共十七章).pdf
- 《电脑编程》教学参考书籍文献(JAVA)Introduction to Java Distributed Objects - Using RMI and CORBA.pdf
- 《电脑编程》教学参考书籍文献(JAVA)EJB Design Patterns Advanced Patterns, Processes, and Idioms(2002, Floyd Marinescu, Wiley).pdf
- 《电脑编程》教学参考书籍文献(C++编程书籍)设计模式 - 可利用面向对象软件的基础 Design Patterns - Elements of Reusable Object-Oriented Software.pdf
- 《电脑编程》教学参考书籍文献(C++编程书籍)Addison Wesley - Effcient C++ Programming Techniques.pdf
- 《超级计算》教学资源(参考资料)高性能计算之并行编程技术——MPI并行程序设计.pdf
- 《数据库管理及应用》课程电子教案(PPT课件)3.07 QBE Language QBE数据库语言.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)4.01 Optimitation of Query 查询优化.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)4.02 Access_path Based Query Optimization 基于存取路径的查询优化.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)4.03 Logical structures of Database 数据库的逻辑结构.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)4.04 DBMS 数据库管理系统.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)4.05 DBMS 数据库管理系统.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)5.01 Transaction Management 事务管理.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)5.03 Execution and Recovery of Update Transaction 更新事务的执行与恢复.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)5.04 Concurrent Control Introduction 并发控制引论.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)5.05 Locking Protocol 加锁协议.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)5.06 Examination dead lock 死锁的检测.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)5.07 concurrent control Based time stamp 基于时间标记的并发控制技术.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)5.08 Multiple Granularity Locking 多粒度封锁.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)5.09 Concurrent Control Based Time Stamp 基于时间标记的并发控制技术.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)6.01 Dependency of Data 数据库相关性.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)6.02 Armstrong 公理体系.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)6.03 Introduction to Normal Form of relation 关系规范化导论.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)6.04 Normal Form of Relation 关系规范化.ppt
- 吉林大学:《数据结构》课程电子教案(PPT课件)第一章 绪论(主讲人:徐沛娟).ppt
- 吉林大学:《数据结构》课程电子教案(PPT课件)第七章 图.ppt