Use this statement to permit a database server to act as a web server.
CREATE SERVICE service-name
TYPE 'DISH'
[ GROUP { group-name | NULL } ]
[ FORMAT { 'DNET' | 'CONCRETE' | 'XML' | NULL } ]
[ common-attributes ]
CREATE SERVICE service-name
TYPE 'SOAP'
[ DATATYPE { ON | OFF | IN | OUT } ]
[ 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 names can be any sequence of alphanumeric characters or /, -, _, ., !, ~, *, ', (, or ), except that the first character must not begin with a slash (/) and the name must not contain two or more consecutive slash characters.
Unlike other services, you cannot specify a forward slash (/) in a DISH service name.
AUTHORIZATION clause Determines whether users must specify a user name and password when connecting to the service. If authorization is OFF, the AS clause is required and a single user must be identified by the USER clause. All requests are run using that user's account and permissions.
If authorization is ON, all users must provide a user name and password. Optionally, you can limit the users that are permitted to use the service by providing a user or group name using the USER clause. If the user name is NULL, all users can access the service.
The default value is ON. It is recommended that production systems be run with authorization turned on and that you grant permission to use the service by adding users to a group.
SECURE clause Indicates whether unsecured connections are accepted. ON indicates that only HTTPS connections are to be accepted. Service requests received on the HTTP port are automatically redirected to the HTTPS port. If set to OFF, both HTTP and HTTPS connections are accepted. The default value is OFF.
USER clause If authorization is disabled, this parameter becomes mandatory and specifies the user ID used to execute all service requests. If authorization is enabled (the default), this optional clause identifies the user or group permitted to access the service. The default value is NULL, which grants access to all users.
URL clause Determines whether URL paths are accepted and, if so, how they are processed. OFF indicates that nothing must follow the service name in a URL request. ON indicates that the remainder of the URL is interpreted as the value of a variable named url. ELEMENTS indicates that the remainder of the URL path is to be split at the slash characters into a list of up to 10 elements. The values are assigned to variables named url plus a numeric suffix of between 1 and 10; for example, the first three variable names are url1, url2, and url3. If fewer than 10 values are supplied, the remaining variables are set to NULL. If the service name ends with the character /, then URL must be set to OFF. The default value is OFF.
GROUP clause Applies to DISH services only. Specifies a common prefix that controls which SOAP services the DISH service exposes. For example, specifying GROUP xyz exposes only SOAP services xyz/aaaa, xyz/bbbb, or xyz/cccc, but does not expose abc/aaaa or xyzaaaa. If no group name is specified, the DISH service exposes all the SOAP services in the database. SOAP services can be exposed by more than one DISH service. The same characters are permitted in group names as in service names.
DATATYPE clause Applies to SOAP services only. Controls whether data typing is supported for parameter inputs and/or result set outputs (responses) for all SOAP service formats. When supported, data typing allows a SOAP toolkit to parse and cast the data to the appropriate type. Parameter data types are exposed in the schema section of the Web Service Definition Language (WSDL) generated by the DISH service. Output data types are represented as XML schema type attributes for each column of data.
The following values are permitted for the DATATYPE clause:
ON Support data typing for input parameters and result set responses.
OFF Do not support data typing of input parameters and result set responses (the default).
IN Support data typing of input parameters only.
OUT Support data typing of result set responses only.
For more information on SOAP services, see Using SOAP services .
FORMAT clause Applies to DISH and SOAP services only. Generates output formats compatible with various types of SOAP clients, such as .NET or Java JAX-RPC. If the format of a SOAP service is not specified, the format is inherited from the service's DISH service declaration. If the DISH service also does not declare a format, it defaults to DNET, which is compatible with .NET clients. A SOAP service that does not declare a format can be used with different types of SOAP clients by defining multiple DISH services, each having a different FORMAT type.
The following formats are supported:
DNET Microsoft DataSet format for use with .NET SOAP clients. DNET is the default FORMAT value and was the only format available before version 9.0.2.
CONCRETE A platform-neutral DataSet format for use with clients such as JAX-RPC, or with clients that automatically generate interfaces based on the format of the returned data structure. Specifying this format type exposes an SimpleDataset element within the WSDL. This element describes the result set as a containment hierarchy of a rowset composed of an array of rows, each of which contains an array of column elements.
XML A simple XML string format. The DataSet is returned as a string that can be passed to an XML parser. This format is the most portable between SOAP clients.
TYPE clause Type clauses indicate the type of result set returned.
The following result types are supported:
RAW The result set is sent to the client without any further formatting. You can produce formatted documents by generating the required tags explicitly within your procedure.
HTML The result set of a statement or procedure is automatically formatted into an HTML document that contains a table.
XML The result set is returned as XML. If the result set is already XML, no additional formatting is applied. If it is not already XML, it is automatically formatted as XML. The effect is similar to that of using the FOR XML RAW clause in a SELECT statement.
SOAP The result set is returned as a SOAP response. The format of the data is determined by the FORMAT clause. All requests to a SOAP service must be valid SOAP requests, not just a simple HTTP requests. For more information about the SOAP standards, see www.w3.org/TR/SOAP.
DISH A DISH service (Determine SOAP Handler) acts as a proxy for those SOAP services identified by the GROUP clause, and generates a WSDL (Web Services Description Language) file for each of these SOAP services.
For more information, see Creating web services.
statement If the statement is NULL, the URL must specify the statement to be executed. Otherwise, the specified SQL statement is the only one that can be executed through the service. The statement is mandatory for SOAP services. The default value is NULL.
It is strongly recommended that all services run in production systems define a statement. The statement can be NULL only if authorization is enabled.
The CREATE SERVICE statement causes the database server to act as a web server. A new entry is created in the ISYSWEBSERVICE system table.
Must have DBA authority.
None.
SQL/2003 Vendor extension.
To set up a web server quickly, start a database server with the -xs option (for example, -xs http), then execute the following statement:
CREATE SERVICE tables TYPE 'HTML' AUTHORIZATION OFF USER DBA AS SELECT * FROM SYS.SYSTAB;
After executing this statement, use any web browser to open the URL http://localhost/tables.
The following example demonstrates how to write a Hello World program.
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;
After executing this statement, use any web browser to open the URL http://localhost/hello_world.