您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

sp_webservices

语法

创建代理表:


sp_webservices 'add', '<wsdl_uri>' [, <sds_name>] 
	[, '<method_name>=<proxy_table>
	 [,<method_name>=<proxy_table> ]* ' ]

显示 sp_webservices 的用法信息:


sp_webservices help[, ’<option>’]

列出映射到 WSDL 文件的代理表:


sp_webservices 'list'[, '<wsdl_uri>'][, <sds_name>]

修改超时设置:


sp_webservices 'modify', '<wsdl_uri', >'timeout=<time>'

删除映射到 WSDL 文件的代理表:


sp_webservices 'remove', '<wsdl_uri>'[, <sds_name>]

用户定义的 Web 服务的选项:

  • 为用户定义的 Web 服务创建数据库别名:

    
    sp_webservices 'addalias' <alias_name> , <database_name>
    

  • 部署用户定义的 Web 服务:

    
    sp_webservices 'deploy', ['all' | '<service_name>']
    

  • 在用户定义的 Web 服务中删除数据库别名:

    
    sp_webservices 'dropalias' <alias_name>
    

  • 列出用户定义的 Web 服务中映射到 WSDL 文件的代理表:

    
    sp_webservices 'listudws' [, '<service_name>']
    

  • 列出用户定义的 Web 服务的数据库别名或别名。

    
    sp_webservices 'listalias'
    

  • 取消部署用户定义的 Web 服务:

    
    sp_webservices 'undeploy', ['all' | '<service_name>']
    

    参数

    'add', '<wsdl_uri>' [, <sds_name>] [, '<method_name>=<proxy_table>[, <method_name>=<proxy_table> ]* ' ]

    用于为 WSDL 文件指定的 Web 方法创建代理表。如果成功使用了 add 选项,将自动调用 list 选项以描述新代理表的模式:

  • <wsdl_uri> – 是要映射到新代理表的 WSDL 文件的位置。如果指定了此参数,则 Web 服务会确保 syswsdl 表中存在 URI。

  • <sds_name> – 在 interfaces 或 sql.ini 文件中为 ASE Web 服务引擎指定的名称。缺省值为 ws。如果 sysattributes 表中不存在任何条目,则会产生错误。

  • <method_name> – 是映射到代理表的 Web 方法的名称。所指定的 <method_name> 必须是在关联的 WSDL 文件中指定的 Web 方法的名称。

  • <proxy_table> – 是在 <method_name> 中指定的 Web 方法映射到的代理表的名称。

    'addalias' <alias_name> , <database_name>

    用于创建在用户定义的 Web 服务中表示数据库名称的别名,其中:

  • <alias_name> –(必需)是指定数据库的别名。

  • <database_name> –(必需)是指定的别名对应的数据库的名称。

    使用别名可以在指定 URL 中表示数据库名称的部分时进行更好的控制。将别名与 create service 命令的 userpath 选项搭配使用时,可以完全控制用于访问用户定义的 Web 服务的 URL。

    'deploy', ['all' | '<service_name>']

    用于配置用户定义的 Web 服务,以使 ASE Web 服务引擎可通过 HTTP 或 HTTPS 对其进行访问,其中:

  • all – 指定为当前数据库部署所有用户定义的 Web 服务。

  • <service_name> – 是要部署的用户定义 Web 服务的名称。

    deploy 和 undeploy 选项用于控制用户定义的 Web 服务何时可用。需要具备系统角色 webservices_role 特权才能使用此选项。

    如果指定了 all 参数,则 ASE Web 服务引擎将删除其用户定义的 Web 服务的内部高速缓存,并从 SAP ASE 中重新读取有关用户定义的 Web 服务的所有元数据。

    不能删除或重命名当前部署的用户定义的 Web 服务。

    'dropalias' <alias_name>

    用于删除表示数据库名称的别名,其中 <alias_name> 是要删除的别名。

    如果一个已配置的用户定义的 Web 服务正在引用一个别名,则无法删除该别名。要删除该别名,必须先取消部署引用该别名的用户定义的 Web 服务。

    help[, '<option>']

    提供阐明如何使用 sp_webservices 存储过程的说明和示例。'<option>' 的有效值包括 add、list、remove 和 modify。

    如果没有为 <option> 指定任何值,则 help 选项将输出 add、addalias、deploy、dropalias、list、listalias、listudws、modify、remove 和 undeploy 选项的简短语法描述。

    'list' [, '<wsdl_uri>'] [, <sds_name>]

    列出 WSDL 文件中描述的 Web 方法,其中:

  • <wsdl_uri> – 是所映射的 WSDL 文件的 URI。如果没有为 <wsdl_uri> 指定值,则 list 选项将显示有关已经映射到代理表的所有 Web 方法的信息。

    <sds_name> – 是在 interfaces 或 sql.ini 文件中为 ASE Web 服务引擎指定的 SDS 服务器的名称。缺省值为 ws。如果 sysattributes 表中不存在任何条目,则会产生错误。

    如果 <wsdl_uri><sds_name> 这两个参数都没有指定,则会按 wsdlid 顺序列出 sysattributes 表中的所有条目。

    如果 WSDL 文件中描述的 Web 方法:

  • 已经映射到代理表 – 则 list 选项将输出有关各个代理表的信息。

  • 尚未映射到代理表 – 则 list 选项会输出可用于创建代理表的 SQL。

    'listalias'

    用于列出用户定义的 Web 服务中的所有别名。

    'listudws' [, '<service_name>']

    用于列出当前数据库的用户定义的 Web 服务,其中 <service_name> 是要列出的用户定义的 Web 服务的名称。

    如果不指定 <service_name> 参数,则列出所有由用户定义的 Web 服务。

    'modify', '<wsdl_uri', >'timeout=<time>'

    用于修改 WSDL 文件的属性信息,其中:

  • <wsdl_uri> – 是要更改属性信息的 WSDL 文件的 URI。</p> <p>

  1. Web 方法 getRate 将映射到与其同名的代理表。

    通过从该代理表选择来调用该 Web 方法:

    
    1> select * from getRate where _country1 ='usa' and _country2 = 'india'
    2> go
    

    以前的 select 返回的结果显示指定的参数的交换率:

    
    Result          _country1       _country2
    43.000000       usa             india
    (1 row affected)
    

    示例 2

    调用一个 Web 方法以显示 XML 文档中的股票信息。

  1. 使用 sp_webservices 的 add 选项将 Web 方法映射到代理表:

    
    1> sp_webservices "add" , "http://www.webservicex.net/stockquote.asmx?WSDL"
    2> go
    

    Web 方法 GetQuote 将映射到与其同名的代理表。

  1. 通过选择 GetQuote 代理表的 outxml 列来调用该 Web 方法:

    
    1> select outxml from GetQuote where _inxml = '<?xml version="1.0"
    encoding="utf-8"?>
    2>     <GetQuote xmlns="http://www.webserviceX.NET/">
    3>       <symbol>SY</symbol>
    4>     </GetQuote>'
    5> go
    

    前面的 select 返回的结果显示 XML 文档中的报价信息:

    
     outxml
    
    <?xml version="1.0" encoding="UTF-8" ?><GetQuoteResponse 
    xmlns="http://www.webserviceX.NET/"><GetQuoteResult><StockQuotes><Stock>
    <Symbol>SY</Symbol><Last>21.48</Last><Date>7/21/2005</Date><Time>4:01pm
    </Time><Change>+1.72</Change><Open>20.00</Open><High>21.60</High>
    <Low>19.91</Low><Volume>2420100</Volume><MktCap>1.927B</MktCap>
    <PreviousClose>19.76</PreviousClose><PercentageChange>+8.70%
    </PercentageChange><AnnRange>12.75 - 20.44</AnnRange><Earns>0.706</Earns>
    <P-E>27.99</P-E><Name>SYBASE INC</Name></Stock></StockQuotes>
    </GetQuoteResult></GetQuoteResponse>
    
    (1 row affected)
    

    示例 3

    通过一个显示股票信息的视图调用在上一个示例中映射到代理表的 GetQuote Web 方法。

  1. 创建一个表来保存表示股票的股票代码,以便使用此 Web 服务:

    
    1> create table stocksymbol(symbol varchar(100))
    2> go
    

  1. 将数据插入 stocksymbol 表中:

    
    1> insert stocksymbol values("SY")
    2> insert stocksymbol values("ORCL")
    3> go
    

  1. 创建一个调用 GetQuote 方法的视图:

    
    1> CREATE VIEW getstockvw as
    2> select Symbol = xmlextract('//Stock/Symbol/text()',outxml returns varchar(5)),
    3>   Name = xmlextract('//Stock/Name/text()',outxml returns varchar(20)),
    4>   Time = xmlextract('//Stock/Time/text()',outxml returns varchar(10)),
    5>   Date = xmlextract('//Stock/Date/text()',outxml returns date),
    6>   High = xmlextract('//Stock/High/text()',outxml returns decimal(15,2)),
    7>   Low = xmlextract('//Stock/Low/text()',outxml returns decimal(15,2))
    8> FROM GetQuote ,stocksymbol
    9> WHERE _inxml = '<GetQuote xmlns="http://www.webserviceX.NET/"><symbol>'+symbol+'</symbol></GetQuote>'
    10> go
    

  1. 从 getstockvw 视图中选择以查看 GetQuotes 方法的输出:

    
    1> select * from getstockvw
    2> go
    

    前面的 select 返回的结果显示视图定义指定的参数的报价信息:

    
    Symbol   Name            Time      Date           High     Low
    -------  -------------   -------   ------------   ------   ------
    SY       SYBASE INC      4:01pm    Jul 21 2005    21.60    19.91
    ORCL     ORACLE CORP     4:00pm    Jul 21 2005    14.05    13.54
    MSFT     MICROSOFT CP    4:00pm    Jul 21 2005    26.48    26.19
    
    (3 rows affected)
    

    示例 4

    显示由用户“bob”在 pubs2 数据库中输入的以下命令的审计表条目:

    
    sp_webservices 'deploy', 'all'
    

    相应的审计表条目将列出 110、bob 和 pubs2,分别作为 event、loginname 和 dbname 列中的值。extrainfo 列包含以下内容:

    
    webservices_role; deploy_all; ; ; ; ; bob/ase;
    

    示例 5

    显示由用户“bob”在 pubs2 数据库中输入的以下命令的审计表条目:

    
    sp_webservices 'deploy', 'rawservice'
    

    相应的审计表条目将列出 110、bob 和 pubs2,分别作为 event、loginname 和 dbname 列中的值。extrainfo 列包含以下内容:

    
    webservices_role; deploy; ; ; ; ; bob/ase;
    

    示例 6

    显示由用户“bob”在 pubs2 数据库中输入的以下命令的审计表条目:

    
    sp_webservices 'undeploy', 'all'
    

    相应的审计表条目将列出 111、bob 和 pubs2,分别作为 event、loginname 和 dbname 列中的值。extrainfo 列包含以下内容:

    
    webservices_role; undeploy_all; ; ; ; ; bob/ase;
    

    示例 7

    显示由用户“bob”在 pubs2 数据库中输入的以下命令的审计表条目:

    
    sp_webservices 'undeploy', 'rawservice'
    

    相应的审计表条目将列出 111、bob 和 pubs2,分别作为 event、loginname 和 dbname 列中的值。extrainfo 列包含以下内容:

    
    webservices_role; deploy; ; ; ; ; bob/ase;
    

    有关 sysaudits 表列的完整说明,请参见《系统管理指南》。

    用法

    如果没有为 Web 方法指定 值,则缺省情况下为 Web 方法生成的代理表是在 WSDL 文件中指定的 Web 方法的名称。如果已存在一个具有此 Web 方法名称的代理表,则生成的新代理表的名称将类似于:</p> <div class="code-block"><pre><code> <method_nameN>

其中: