(1)嵌入式SQL语言的引入
交互式SQL语言有很多优点:
1.记录集合操作
2.非过程性:指出要做什么,而不做出怎么做
3.一条语句就可以实现复杂查询。
交互式SQL语句缺陷:
1.SQL对普通用户不方面,只是对编程人员方便
2.SQL对复杂的检索操作难以用一条语句完成,这个时候需要结合高级语言的分支判断操作。
嵌入式SQL语言 = 高级语言+ SQL语言
嵌入式SQL语言:将SQL语言嵌入到一种高级语言中,这种高级语言,被称之为宿主语言。
既继承了高级语言的过程性、有结合SQL语言复杂结果操作的非过程性、同时又为数据库操作者提供安全的操作方式:通过应用程序操作。嵌入式SQL语言更加灵活。
--以C语言为例:
exec sql select sname into :v sname ,:v sage from student where sname =”张三”;
--注:exec sql 引导sql语句:提供给编译器,以便对SQL语句编译成C编译器可以识别的程序
--Into语句: 该子句用于指出接受SQL语言检索结果的程序变量
--由冒号引导的程序变量: 将值赋给程序中的变量。
(2)高级语言中使用SQL语言需要解决的问题
问题1:如何和数据库连接和断开连接
问题2:如何将宿主程序的变量传递给SQL语句
问题3:SQL语言如何执行
问题4:如何将SQL检索的结果传递给宿主程序进行处理
问题5: 静态SQL,SQL语句中的常量变为变量
问题6:宿主程序如何知道SQL语句是否执行成功。
问题7:动态SQL,依据条件动态构造SQL语句,但是欲访问的表名和字段名对编程者是已知的。
问题8:动态SQL,依据条件动态构造SQL语句,但是欲访问的表名和字段名对编程者是未知的。
(3) 程序与数据库的连接与断开
--在嵌入式SQL执行之前,首先要进行数据库的连接 不同的DBMS 具体连接语句略有差异。
--SQL标准中的建议语法:
exec sql connect to target-server as connect-name user user-name
--或者
exec sql con