--嵌入式SQL程序设计
--SQL2005管理员大全
--嵌入SQL语句的应用程序叫做宿主程序,书写该程序的语言称为宿主语言。
--宿主语言可以是C、 C++、JAVA等。嵌入的SQL语句与交互式SQL在语法上类似
--但是嵌入式SQL在个别语句上有所扩充
--嵌入的SQL语句主要有两种类型:执行性SQL语句和说明性SQL语句。执行性SQL语句可用来
--定义 数据、查询和操纵数据库中的数据,每一执行性语句真正对数据库进行操作。说明性语句
--用来说明 通信域和SQL语句中用到的变量。说明性语句不生成执行代码
--在C语言中使用嵌入式SQL
--SQLSERVER提供对C的嵌入式语言的支持,在用于C语言的嵌入式SQL( 以下简称ESQL/C)
--大部分语法都来源于TSQL语法,只是在某些细节上略有不同。
--在ESQL/C中,关键字和SQL语句都是不区分大小写的,但是对于游标、连接和动态SQL语句
--的定 义却是区分大小写的,例如,以下定义的两个游标是完全不同的
DECLARE RED_CURSOR CURSOR
DECLARE red_CURSOR CURSOR
--1、连接到SQLSERVER
--在ESQL/C中,连接到SQLSERVER用connect to语句,语法如下:
CONNECT TO servername.databasename AS connection_name USER LOGIN.PASSWORD
--当只有一个连接时,可以不指定连接的名称,但是如果应用程序使用了两个或以上的连接
--,必 须为每个连接指定不同的名称。当用connect to定义了连接后,所有的后续操作都将
--在当前连接上 进行,如果想使用另外一个连接,就要用SET CONNECTION来改变当前的连接,语法如下:
SET CONNECTION connection_name
--关闭与数据的连接用DISCONNECT,可以关闭当前连接或关闭所有连接,语法如下
DISCONNECT connection_name | ALL | CURRENT
--例子:连接机器red上数据库名为book和test的SQLSERVER数据库,数据库用户名为sa
--密码为空 ,然后分别关闭他们
EXEC SQL CONNECT TO red.book AS con1 USER sa;
EXEC SQL CONNECT TO red.test AS con2 USER sa;
EXEC SQL DISCONNECT CON1
EXEC SQL DISCONNECT CON2
--2、使用宿主变量
--宿主变量作为标准的C变量在ESQL/C中定义,使用宿主变量可以在SQL语句中 指定输入参数或接收输出参数
--定义宿主变量的语句写在BEGIN DECLARE SECTION和END DECLARE SECTION语句之间
EXEC SQL BEGIN DECLARE SECTION
INT CompanyID
CHAR CompanyName[30]
EXEC SQL END DECLARE SECTION
--使用宿主变量时,要在宿主变量前加一个冒号作为引用宿主变量的标志
"WHERE CompanyID=:CompanID"
--注意:如果从数据库中传给宿主变量的值是NULL,那么宿主变量将会把NULL值转换为-1处理,例如 :虽然给
--宿主变量Address赋予了NULL值,以下SQL语句还是不会返回Address为NULL值的记录
EXEC SQL SELECT FROM Company
WHERE Address=:ADDRESS