使用此语句,允许数据库服务器充当 Web 服务器。
CREATE SERVICE service-name
TYPE 'DISH'
[ GROUP { group-name | NULL } ]
[ FORMAT { 'DNET' | 'CONCRETE' | 'XML' | NULL } ]
[ common-attributes ]
CREATE SERVICE service-name
TYPE 'SOAP'
[ FORMAT { 'DNET' | 'CONCRETE' | 'XML' | NULL } ]
[ common-attributes ]
AS statement
CREATE SERVICE service-name
TYPE { 'RAW' | 'HTML' | 'XML' }
[ URL [ PATH ] { ON | OFF | ELEMENTS } ]
[ common-attributes ]
[ AS { statement | NULL } ]
common-attributes:
[ AUTHORIZATION { ON | OFF } ]
[ SECURE { ON | OFF } ]
[ USER { user-name | NULL } ]
service-name Web 服务名可以是字母数字字符或以下字符组成的任何序列:"/"、"-"、"_"、"."、"!"、"~"、"*"、"'"、"("或")",但第一个字符不能以斜杠 (/) 开始,且名称中不能包含两个或两个以上连续的斜杠字符。
service-type-string 标识服务的类型。该类型必须是列出的服务类型之一。无缺省值。
AUTHORIZATION 子句 确定当连接到该服务时用户是否必须指定用户名和口令。如果 AUTHORIZATION 为 OFF,则需要使用 AS 子句,并且必须用 USER 子句标识一个用户。使用该用户的帐户和权限执行所有请求。
如果 AUTHORIZATION 为 ON,则所有用户必须提供用户名和口令。或者,通过使用 USER 子句提供用户名或组名,限制允许使用该服务的用户。如果用户名为 NULL,则所有已知用户都可以访问该服务。
缺省值为 ON。建议在启用了授权的情况下运行生产系统,并且通过将用户添加到组中来授予使用该服务的权限。
SECURE 子句 指示是否接受不安全的连接。ON 指示只接受 HTTPS 连接。自动将 HTTP 端口上接收的服务请求重定向到 HTTPS 端口。如果设置为 OFF,则 HTTP 和 HTTPS 连接都接受。缺省值为 OFF。
USER 子句 如果禁用授权,则此参数成为必需的参数,并指定用于执行所有服务请求的用户 ID。如果启用授权(缺省值),则此可选子句标识允许访问该服务的用户或组。缺省值为 NULL,即向所有用户授予访问权限。
URL 子句 确定是否接受 URI 路径;如果接受,确定如何处理 URI 路径。OFF 指示 URI 请求中服务名后面不必有任何内容。ON 指示将其余的 URI 解释为变量 url 的值。ELEMENTS 指示将其余 URI 路径在斜线字符处分隔开,分隔后的每组内容最多包含 10 个元素。将这些值指派给名为 url 的变量外加介于 1 和 10 之间的数字后缀;例如,前三个变量名称分别为 url1、url2 和 url3。如果提供不到 10 个值,则将其余变量设置为 NULL。如果服务名以字符 / 结尾,则必须将 URL 设置为 OFF。缺省值为 OFF。
GROUP 子句 仅适用于 DISH 服务。指定一个可控制 DISH 服务公开哪个 SOAP 服务的公用前缀。例如,指定 GROUP xyz 时只公开 SOAP 服务 xyz/aaaa、xyz/bbbb 或 xyz/cccc,但不公开 abc/aaaa 或 xyzaaaa。如果未指定组名,则 DISH 服务公开数据库中的所有 SOAP 服务。SOAP 服务可以由多个 DISH 服务公开。组名与服务名中允许使用相同的字符。
FORMAT 子句 仅适用于 DISH 和 SOAP 服务。生成与多种类型的 SOAP 客户端(比如 .NET 或 Java JAX-RPC)兼容的输出格式。如果未指定 SOAP 服务的格式,则从该服务的 DISH 服务声明继承格式。如果 DISH 服务也没有声明格式,则格式缺省为与 .NET 客户端兼容的 DNET。可以通过定义多个具有不同 FORMAT 类型的 DISH 服务,将未声明格式的 SOAP 服务用于不同类型的 SOAP 客户端。
statement 如果该语句为 NULL,则 URI 必须指定要执行的语句。否则,指定的 SQL 语句是可通过该服务执行的唯一语句。该语句是 SOAP 服务所必需的,而 DISH 服务将忽略该语句。缺省值为 NULL。
强烈建议在生产系统中运行的所有服务都定义一个语句。只有在启用了授权的情况下,该语句才能为 NULL。
DNET 用于 .NET SOAP 客户端的 Microsoft DataSet 格式。DNET 是缺省的 FORMAT 值,而且是版本 9.0.2 前唯一可用的格式。
CONCRETE 一个与平台无关的 DataSet 格式,用于如 JAX-RPC 的客户端,或者用于根据返回的数据结构的格式自动生成接口的客户端。指定此格式类型可公开 WSDL 中的 ASADataset 元素。此元素将结果集描述为由列元素数组组成各行,又由这些行数组组成行集的包容层次。
XML 一个简单的 XML 字符串格式。DataSet 作为可以传递到 XML 分析器的字符串返回。此格式最适合用在 SOAP 客户端之间。
RAW 将结果集发送到客户端,而不进行任何进一步的格式设置。可以通过在过程中显式生成所需的标记来产生格式化文档。
HTML 自动将语句或过程的结果集转换为包含表的 HTML 文档格式。
XML 结果集作为 XML 返回。如果结果集已经是 XML,则不应用其它格式。如果还不是 XML,则自动转换成 XML 格式。其效果与在 SELECT 语句中使用 FOR XML RAW 子句相似。
SOAP 结果集作为 SOAP 响应返回。数据的格式由 FORMAT 子句确定。对 SOAP 服务的所有请求都必须是有效的 SOAP 请求,而不仅是简单的 HTTP 请求。有关 SOAP 标准的详细信息,请参见
www.w3.org/TR/SOAP。
DISH DISH 服务 (Determine SOAP Handler) 用作 GROUP 子句标识的那些 SOAP 服务的代理,并为每种 SOAP 服务生成一个 WSDL(Web 服务描述语言)文件。
创建服务器的语句使数据库服务器作为 Web 服务器使用。在 SYSWEBSERVICE 系统表中创建一个新的条目。
必须具有 DBA 权限。
无。
若要快速设置 Web 服务器,请使用 -xs 命令行选项启动数据库服务器,然后执行以下语句:
CREATE SERVICE tables TYPE 'XML'
AUTHORIZATION OFF
USER DBA
AS SELECT *
FROM SYS.SYSTABLE在执行该语句之后,使用任何 Web 浏览器打开 URL http://localhost/tables。
以下示例演示了如何编写一个 Hello World 程序。
CREATE PROCEDURE hello_world_proc
RESULT (html_doc long varchar)
BEGIN
CALL dbo.sa_set_http_header( 'Content-Type', 'text/html' );
SELECT '<html>\n'
|| '<head><title>Hello World</title></head>\n'
|| '<body>\n'
|| '<h1>Hello World!</h1>\n'
|| '</body>\n'
|| '</html>\n';
END;CREATE SERVICE hello_world TYPE 'RAW' AUTHORIZATION OFF USER DBA AS CALL hello_world_proc;
SQL Anywhere Studio 9.0.2
版权所有 © 1989–2005 Sybase, Inc. 部分版权所有 © 2001–2005 iAnywhere Solutions, Inc. 保留所有权利。