18143453325 在线咨询 在线咨询
18143453325 在线咨询
所在位置: 首页 > 营销资讯 > 信息时代 > SQL语言调用级接口(数据库)

SQL语言调用级接口(数据库)

时间:2022-11-07 14:30:01 | 来源:信息时代

时间:2022-11-07 14:30:01 来源:信息时代

    SQL语言调用级接口 : SQL标准的一个重要组成部分,标准编号为ISO/IEC 9075-3。该标准定义了在Ada、C、COBOL、FORTRAN、M、PASCAL、PL/I等高级语言中访问SQL数据库的API规范。在SQL:2008中,它的全名为: Information Technology—Database Languages—SQL—Part 3:Call-Level Interface(SQL/CLI)。
SQL/CLI最初来源于X/Open组织(后来更名为The Open Group)在1990年代初起制定的调用级接口标准(CLI),当时该标准主要为C和COBOL语言访问数据库的API做了定义。在SQL标准中,SQL/CLI部分最早是作为SQL:1992标准的附录出现的。后来在ISO/IEC 9075-3:1995中正式成为标准的一部分,并一直存在于SQL:1999、SQL:2003等后续国际标准中。现在被工业界广泛采纳的ODBC、JDBC等规范等也是以X/Open的CLI为基础制定的。值得注意的是,ODBC的核心概念及定义和SQL/CLI 高度一致,甚至可以认为 ODBC是SQL/CLI的一种具体实现方式。从现有的产品来看,SQL/CLI本身在产品中得到的支持和实现远远不如同样基于CLI发展出来的ODBC、JDBC等后起之秀。ODBC、JDBC等规范有微软、Sun等领先厂商的大力推动,而且它们本身也和特定的编程语言和开发平台绑定得比较紧密,相关编程语言和编程环境的推广,大大促进了规范本身在产品中的实现。
SQL/CLI所定义的例程(routines)总数超过了60个。标准中采用例程而不是函数或过程来称呼它们,是为了照顾到不同语言中函数和过程两者之间的区别。SQL/CLI的例程可以分成以下几类:
(1)资源的分配和释放。
(2)到SQL服务器的连接。
(3)SQL语句的执行和结果集的获取。
(4)诊断信息的获取。
(5)事务的控制。
(6)SQL/CLI以及SQL实现信息的获取。
SQL/CLI中例程的名字因CLI本身针对的高级语言的不同或具体实现方法的不同而分为两种形式: 一种以SQLR打头,表示参数以引用的方式传递; 一种以SQL打头,表示参数以值的方式传递。C语言支持的是值传递方式,因此针对C语言实现的CLI中例程的名字通常是以SQL打头的,例如:SQLAllocHandle。类似的,ODBC中的API名称也都是以SQL打头的。在后面的描述中,为了简便,将直接采用没有SQLR或SQL打头的名称作为例程的名字。
句柄(Handle)是SQL/CLI中的一个重要概念。它表示SQL/CLI分配的资源,应用程序通过它引用SQL/CLI的资源。例程AllocHandle可以用于分配SQL环境、SQL连接、CLI描述符区、SQL语句处理等所需的资源。在被调用后,AllocHandle可以返回环境句柄、连接句柄、描述符句柄或语句句柄。例程FreeHandle被用来释放句柄对应的资源。还可以采用AllocEnv、AllocConnect、AllocStmt分别分配环境句柄、连接句柄和语句句柄。类似地,也可以采用FreeEnv、FreeConnect、FreeStmt分别释放环境句柄、连接句柄和语句句柄对应的资源。句柄的数据类型是INTEGER,无效句柄用0表示。
返回码(Return code)是SQL/CLI中另一个重要的概念。在SQL/CLI例程执行的过程中通过返回码表示其执行的状态。其中取值0表示例程成功执行(success)。取值1表示成功执行,但是带有警告信息(success with information)。取值100表示没有获得数据(no data found)。取值99表示需要数据(data needed)。取值1表示错误(error),说明例程没有执行成功。取值2表示无效的句柄(invalid handle)。除了返回码以外,对于Error、GetDiagField、GetDiagRec之外的其他例程,SQL/CLI的实现都要在诊断区中记录除了“无效句柄”之外的完成状态和异常状态。
诊断区(diagnostics area)记录了例程执行后的头信息(一般性信息)以及0个或多个状态记录。除了Error、GetDiagField和GetDiagRec之外的例程在开始执行时,都要清空其对应的诊断区。如果在例程的执行过程中没有出现“无效句柄”或“需要动态参数值”异常,则诊断区中包含了头部信息。如果例程的返回码是“成功”,则没有任何状态记录。如果返回码是“成功但有警告”或“错误”,则有一个或多个状态记录。如果返回码是“没有数据”,则在SQLSTATE是02000时,没有状态记录,在SQLSTATE是02nnn(其中nnn是实现者定义的子类值)时,可能有状态记录。例程GetDiagField和GetDiagRec可以获取诊断区中的信息。
CLI描述符区(CLI descriptor areas)记录了动态参数的定义、动态参数的取值、SELECT语句的结果列的信息等。CLI描述符区由头信息以及0个或多个项目描述符组成。例程 GetDescField和GetDescRec可以获取描述符区中的信息。例程SetDescField和SetDescRec可以用于设置除了IRD之外的任何CLI描述符区信息。
SQL/CLI不仅定义了上述的一些基本概念,也对很多实现需要的细节、例程的具体定义做了详尽的说明。它还要求具体的实现在定义模式的两个基本表SQL_IMPLEMENTATION_INFO、SQL_SIZING中提供一些具体的信息项。标准的最后还明确定义了符合性的要求。考虑到ODBC的多数内容和SQL/CLI非常一致,而且ODBC的应用更为广泛,读者可以结合ODBC标准去深入理解SQL/CLI的各个部分。

74
73
25
news

版权所有© 亿企邦 1997-2022 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭