- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
主变量
主变量
主变量:
SQL语句引用主变量时,变量名前加“:”,以区别于数据库对象名(如列名等),因此主变量可以与数据库变量同名。反过来,在宿主语言中引用主变量时就无需再加“:”。
主变量说明的格式必须符合宿主语言的要求;变量的数据类型必须是宿主语言和SQL都能处理的类型。
主变量按其作用可分为输入主变量和输出主变量。当主变量用来向SQL输入参数时被称为输入主变量,当被用来输出SQL的执行结果时被称为输出主变量。
输入主变量由应用程序对其赋值,SQL语句引用;
输出主变量由SQL语句对其赋值或设置状态信息,返回给应用程序。
一个主变量有可能既是输入主变量又是输出主变量。利用输入主变量,我们可以指定向数据库中插入的数据,可以将数据库中的数据修改为指定值,可以指定执行的操作,可以指定WHERE子句或HAVING子句中的条件。利用输出主变量,我们可以得到SQL语句的结果数据和状态。
一个系统定义的主变量――SQLCA
SQLCA(SQL Communication Area)称为SQL通信区,它是一个全局变量,供应用程序和DBMS通信之用。SQLCA是一个数据结构。其说明格式与对主变量的说明格式不同。定义SQLCA语法:EXEC SQL INCLUDE SQLCA;SQLCA.SQLCODE是SQLCA的一个分量,属于整数类型,供DBMS向应用程序报告SQL语句的执行情况。
SQLCODE=0,表示SQL语句执行成功,无异常情况出现;
SQLCODE为负整数,表示SQL语句执行失败,具体负值表示错误的类型;
SQLCODE为正整数,表示SQL语句已执行,但出现了意外的情况。
当SQLCODE=100时表示语句已执行,但无数据可取,如DB中无满足条件的记录。
定义宿主变量
方法1:采用BEGIN DECLARE SECTION 和END DECLARE SECTION之间给主变量说明。
方法2:在每个变量的数据类型前加上“$”。如:
$int hostint;
$double hostdbl;
ESQL/C对宿主变量的大小写敏感。但是,ESQL/C的关键字、语句标志符、游标名大小写不敏感。
在SQL语句中,除了使用“:”来标志宿主变量外,还可以使用“$”。当然,“:”是ANSI标准。如:EXEC SQL connect to $hostvar。对于注释,可以使用“--”,也可以使用标准的“”。
指示变量
宿主语言的主变量不能取空值,而DB中的字段值可以为空(NULL),那么当SQL给主变量赋值时或者从还未赋值的主变量处取值时,遇到空值的情况如何处理。嵌入式程序常用的方法是:在主变量后紧跟一个短整型变量,指示它的空值情况,这个短整型变量就称为指示变量。
指示变量是一个整型变量,用来“指示”所指主变量的值或条件。
一个主变量可以附带一个指示变量(Indicator Variable);
指示变量也是一种主变量,紧跟在主变量之后,指示主变量的取值情况;
指示变量为一个短整数,其值为0时表示相应字段值不为空,并可以将该值赋给主变量;当指示变量为负值时,说明对应字段值为空,不能将空值赋给相应的主变量,主变量将保持原值不变;
指示变量的说明和其它使用与主变量相同;
指示变量和前面宿主变量之间用一个空格相分隔。
输入主变量可以利用指示变量赋空值,输出主变量可以利用指示变量检测出是否空值,值是否被截断。
在嵌入式SQL中,查询结果为单记录的SELECT语句需要用INTO子句指定查询结果的存放地点。
查询返回的记录中,可能某些列值为空值NULL,则如下处理:如果INTO子句中主变量后面跟有指示变量,则当查询得出的某个数据项为空值时,系统会自动将相应主变量后面的指示变量置为负值,但不向该主变量执行赋值操作,即主变量值仍保持执行SQL语句之前的值。所以当发现指示变量值为负值时,不管主变量为何值,均应认为主变量值为NULL。指示变量只能用于INTO子句中,并且也必须事先加以说明,引用时前面要加上冒号。
EXEC SQL SELECT Sno, Grade
INTO :Hsno, :Hgrade:Gradeid
FROM SC
由于学生其成绩可以为空值,所以我们在该例INTO子句中加了指示变量Gradeid,用于指示主变量Hgrade是否为空值。指示变量也需要和所有主变量一起在前面程序中事先说明。执行此语句后,如果Gradeid小于0,则不论Hgrade为何值,均认为该学生成绩为空值。
将计算机系全体学生年龄置NULL值
Sageid=-1;
EXEC SQL UPDATE
文档评论(0)