Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.0 (中文) » SQL Anywhere 服务器 - 编程

 

SQL Anywhere 外部环境支持

SQL Anywhere 支持六种外部运行时环境。它们包括以 C/C++ 编写的嵌入式 SQL 和 ODBC 应用程序,以及以 Java、Perl、PHP 或 C# 和 Visual Basic 等基于 Microsoft .NET Framework 公共语言运行库 (CLR) 的语言编写的应用程序。

SQL Anywhere 支持调用以 C 或 C++ 语言编写的编译后本地函数已有一段时间了。但是,如果这些过程由数据库服务器运行,动态链接库或共享对象始终由数据库服务器装载,本地函数也始终由数据库服务器调用。这样做的风险是,如果本地函数导致故障,则会使数据库服务器崩溃。所以,在数据库服务器的外部(即在外部环境中)运行已编译的本地函数,可以消除服务器的这些风险。

以下是对 SQL Anywhere 在外部环境支持方面的概述。

 目录表
 不再支持的选项
 SQL 语句

某个外部环境被设置为在数据库服务器上使用后,即可以在数据库中安装对象并在外部环境内创建使用这些对象的存储过程和函数。这些对象、存储过程和存储函数的安装、创建与使用与当前安装 Java 类和创建及使用 Java 存储过程和函数的方法非常类似。

要添加针对外部环境的注释,可以执行以下语句:

COMMENT ON EXTERNAL ENVIRONMENT environment-name
  IS comment-string

要从文件或表达式将 Perl 或 PHP 外部对象(例如 Perl 脚本)安装到数据库中,需要执行如下的 INSTALL EXTERNAL OBJECT 语句:

INSTALL EXTERNAL OBJECT object-name-string
  [ update-mode ] 
  FROM { FILE file-path | VALUE expression }
  ENVIRONMENT environment-name 

要添加针对所安装 Perl 或 PHP 外部对象的注释,可以执行以下语句:

COMMENT ON EXTERNAL [ENVIRONMENT] OBJECT object-name-string 
  IS comment-string

要从数据库中删除所安装的 Perl 或 PHP 外部对象,需要使用 REMOVE EXTERNAL OBJECT 语句:

REMOVE EXTERNAL OBJECT object-name-string

外部对象安装在数据库中后,即可在外部存储过程和函数定义中使用(类似于当前创建 Java 存储过程和函数的机制)。

CREATE PROCEDURE procedure-name(...)
  EXTERNAL NAME '...' 
  LANGUAGE environment-name
CREATE FUNCTION function-name(...)
  RETURNS ... 
  EXTERNAL NAME '...'
  LANGUAGE environment-name

这些存储过程和函数创建后,即可像数据库中任何其它存储过程或函数一样使用。遇到外部环境存储过程或函数时,数据库服务器会自动启动外部环境(如果尚未启动),并发送获取外部环境所需的一切信息,以便从数据库读取外部对象并执行。根据需要,会返回执行后产生的任何结果集或返回值。

如果要根据要求启动或停止外部环境,可以使用 START EXTERNAL ENVIRONMENT 和 STOP EXTERNAL ENVIRONMENT 语句(类似于当前的 START JAVA 和 STOP JAVA 语句):

START EXTERNAL ENVIRONMENT environment-name
STOP EXTERNAL ENVIRONMENT environment-name

有关详细信息,请参见:


CLR 外部环境
ESQL 和 ODBC 外部环境
Java 外部环境
PERL 外部环境
PHP 外部环境