Collection Contents 上一页 下一页 PDF

ASA SQL 参考

SQL 语句

CREATE SERVICE 语句


说明 

使用此语句,允许数据库服务器充当 Web 服务器。

语法 1 

CREATE SERVICE service-name
TYPE 'DISH'
GROUP { group-name | NULL } ]
FORMAT { 'DNET' | 'CONCRETE' | 'XML' | NULL } ]
common-attributes ]

语法 2 

CREATE SERVICE service-name
TYPE 'SOAP'
FORMAT { 'DNET' | 'CONCRETE' | 'XML' | NULL } ]
common-attributes ]
AS statement

语法 3 

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/aaaaxyz/bbbbxyz/cccc,但不公开 abc/aaaaxyzaaaa。如果未指定组名,则 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。

Format 类型 
服务类型 
用法 

创建服务器的语句使数据库服务器作为 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;

Collection Contents 上一页 下一页 PDF