InterSystems Caché 是一个多模型 DBMS 和应用服务器。
查看此处提供的更多详细信息。
文档。
修改用户密码。
ALTER USER user-name IDENTIFY BY password
ALTER USER user-name IDENTIFIED BY password
| 参数 | 描述 |
|---|---|
| user-name | 待修改密码的已有用户名。用户名不区分大小写。 |
| password | 用户的新密码。密码必须至少包含3个字符,并且不能超过32个字符。密码区分大小写。密码可以包含Unicode字符。 |
ALTER USER命令允许更改用户的密码。可以随时更改自己的密码。要更改其他用户的密码,必须拥有%Admin_Secure:USE系统权限。
IDENTIFY BY和IDENTIFIED BY关键字是同义词。
user-name必须是已存在的用户。
指定一个不存在的用户将生成一个带有%msg的SQLCODE -400错误,如下所示:ERROR #838: User badname does not exist。可以通过调用$SYSTEM.SQL.Security.UserExists()方法来确定用户是否存在。
作为分隔标识符指定的用户名可以是SQL保留字,可以包含逗号(,)、句号(.)、插入符号(^)和两个字符的箭头序列(->)。
它可以以除星号(*)以外的任何有效字符开头。
密码可以是字符串字面值、数字或标识符。
DROP COLUMN可以删除指定为逗号分隔列表的多个列定义。每个列出的列名后面必须紧跟其RESTORY或CASCADE(如果未指定,则默认为RESTRICE)和%DELDATA或%NODELDATE(如果未指定,则默认为%NODELDATA)选项。
默认情况下,删除列定义不会从数据映射中删除存储在该列中的任何数据。
要同时删除列定义和数据,请指定%DELDATA选项。
删除列定义并不删除相应的列级特权。 例如,授予用户在该列上插入、更新或删除数据的权限。 这将产生以下后果:
由于这些原因,通常建议在删除列定义之前使用REVOKE命令从列中撤销列级特权。
RESTRICT关键字(或无关键字):如果列出现在索引中,或者定义在外键约束或其他唯一约束中,则不能删除该列。
为该列尝试DROP COLUMN失败,并出现SQLCODE -322错误。
默认为RESTRICT。
CASCADE关键字:如果该列出现在索引中,该索引将被删除。
可能有多个索引。
如果列出现在外键中,则将删除外键。
可能有多个外键。
如果列在COMPUTECODE或COMPUTEONCHANGE子句中使用,则不能删除该列。
修改表。
大家好,我简单的自我介绍一下,我是姚鑫,
首先Caché,M这门技术相对比较冷门,资料方面都是英文,没有系统的相关资料,记得刚入职时学习的东西都是很基础的,稍微有一些复杂的结构变化,就不知道如何下手。之后,群里的小伙伴总有人问我,希望我出一个系统的Caché视频,这件事我也酝酿了很久,目的就是帮助到更多的同学,让每个小伙伴在日后的工作学习中能更加的得心应手。遇到困难或问题时,大家可以随时在群里咨询,群里的氛围很和谐,有很多热心的大佬,不会说有那种自己觉得简单的问题,不好意思问,没人回答的情况。只要你觉得是个问题就可以发出来。
因为这段时间比较忙,准备的比较仓促,可能有一些内容会有遗漏,大家有啥想法可以群里留言,会后可以答疑,大家可以提出来,一起探讨一下,后续的会准备的更加充分一些。
SQL中用作运算符等的字符表
每个符号的名称后跟其ASCII十进制代码值。
| 符号 | 名称和用法 |
|---|---|
[space] or [tab] |
空白(制表符(9)或空格(32)):关键字、标识符和变量之间的一个或多个空白字符。 |
! |
感叹号(33):条件表达式中谓词之间的或逻辑运算符。用于WHERE子句、HAVING子句和其他地方。在SQL Shell中!命令用于发出ObjectScript命令行。 |
!= |
感叹号/等号:不等于比较条件。 |
" |
引号(34):包含一个分隔的标识符名称。在动态SQL中,用于将类方法参数的文字值括起来,例如将SQL代码作为%Prepare()方法的字符串参数,或者将输入参数作为%Execute()方法的字符串参数。在%PATTERN中,用于将文字值包含在模式字符串中。例如,'3L1"L".L'(意思是3个小写字母,后面跟着大写字母“L”,后面跟着任意数量的小写字母)。在XMLELEMENT中,用于括起标记名字符串。 |
"" |
两个引号:本身是无效的分隔标识符。在分隔标识符内,文字引号字符的转义序列。例如,"a""good""id"。 |
# |
井号(35):有效的标识符名称字符(不是第一个字符)。前后带有空格的模算术运算符。对于嵌入式SQL,是ObjectScript宏预处理器指令前缀。例如,#include。 |
指定SQL RowId属性。
<SqlRowIdProperty>prop</SqlRowIdProperty>
该元素的值是一个SQL标识符。
此元素仅由从早期InterSystems产品迁移的类使用。
<SqlRowIdProperty>元素的默认值为空字符串。
指定内部SQL表号。
<SqlTableNumber>123</SqlTableNumber>
该元素的值是一个表号。
此元素仅由从早期InterSystems产品迁移的类使用。
<SqlTableNumber>元素的默认值为空字符串。
指定用于串行对象的数据定义。
<State>state</State>
此元素的值是此存储定义中的数据定义的名称。
对于串行(嵌入式)类,此关键字指示使用哪个数据定义来定义对象的序列化状态(序列化时对象属性的排列方式)。这也是默认数据定义,默认结构生成器将向其添加未存储的属性。
<State>元素的默认值为空字符串。
指定流属性的默认存储位置。
<StreamLocation>^Sample.指定使用默认存储为持久类分配新ID值的系统函数。
<IdFunction>increment</IdFunction>
这个元素的值可以是increment(使用$increment函数)或sequence(使用$sequence函数)。
如果持久化类不使用IdKey来确定对象ID值,则该元素允许指定用于分配ID值的函数($increment函数或$sequence函数)。
如果类使用$increment函数,则通过对<IdLocation>元素中定义的全局位置中存储的值进行递增来创建新的id。
如果类使用$sequence函数,它可能会保留id块,以便在快速数据摄入的情况下获得更快的速度。
如果没有使用所有保留的ID,则可能导致ID号之间的空白。
当随后的数据被吸收时,这些空白可能会也可能不会被填补。
一个副作用是,具有较高ID的类的实例不一定比具有较低ID的类的实例更新。
此外,在<IdLocation>元素中定义的全局位置上的值与当前分配的任何id都不直接相关。
<IdFunction>元素的默认值是使用类定义创建的类的递增值。
<IdFunction>元素的默认值是使用DDL CREATE TABLE语句创建的类的序列。
指定ID计数器的位置。
Object Script(二)
ObjectScript没有定义任何保留字:你可以自由地使用任何字作为标识符(如变量名)。为了达到这个目的,ObjectScript使用了一组内置的命令以及特殊的字符(比如函数名的"$"前缀),以便将标识符与其他语言元素区分开来。
指定XData块所属的XML名称空间。
要指定XData块所属的XML名称空间,请使用如下语法:
XData name [ XMLNamespace = "namespaceURL" ] { }
其中namespaceURL是XML名称空间的URI。
注意,这一项是用双引号括起来的。
该关键字指定XData块所属的XML名称空间。
如果省略这个关键字,则该XData块的内容不属于任何名称空间。
XData MyXData [ XMLNamespace = "http://www.mynamespace.org" ]
{
}
指定该类的数据存储位置。
<DataLocation>^Sample.PersonD</DataLocation>
element的值是一个全局变量名称,具有可选的前导下标。
一个表达式,它是存储该类数据的位置。
通常这将是一个全局变量引用,如^User.PersonD。
全局变量引用还可以包含一个或多个前导下标。
例如, ^User.Data("Person")。
在从属类(父-子关系中的子类)中使用{%%PARENT}代替全局或局部变量名也是有效的。
例如,{%%PARENT}(ChildData)。
指定一个或多个列,其修改将导致SQL触发触发器。
仅对TSQL可用。
要指定其修改触发触发器的列,请使用以下语法:
Trigger name [ Event = sqlevent, UpdateColumnList = updatecolumnlist ] { //implementation }
其中updatecolumnlist是一个列名或用逗号分隔的列名列表,用括号括起来。
该关键字指定一个或多个列,其修改将触发触发器。
注意,此关键字仅对TSQL可用。
指定这个XData块是否是内部的(不在类文档中显示)。
注意,类文档目前根本没有显示XData。
要指定这个XData块是内部的,请使用以下语法:
XData name [ Internal ] { }
否则,忽略该关键字或将Not放在该关键字之前。
类文档中不显示内部类成员。 如果希望用户看到一个类而不是它的所有成员,则此关键字非常有用。
注意,类文档目前根本没有显示XData块。
指定XData块的MIME类型。
指定存储受事件影响的行或语句的旧值的转换表的名称。
要指定存储旧值的转换表的名称,请使用以下语法:
Trigger name [ Event = sqlevent, OldTable = oldtable, NewTable = newtable ] { //implementation }
其中oldtable是此命名空间中的SQL表的名称。
每个触发器都可以通过转换表(由旧表和新表关键字指定)访问受事件影响的行或语句的旧值和新值。
默认值为空字符串。
在同一个EVENT和TIME有多个触发器的情况下,指定触发器应该触发的顺序。
要指定此触发器的触发顺序,相对于具有相同EVENT和TIME的其他触发器,请使用以下语法:
Trigger name [ Event = sqlevent, Order = n, Time = time ] { //implementation }
其中n为整数。
在同一个EVENT和TIME有多个触发器的情况下,该关键字指定触发器应该触发的顺序。
默认值为0。
指定用于此触发器的SQL名称。
控制触发器何时被触发。
Trigger name [ Event = sqlevent, Foreach = foreach ] { //implementation }
其中foreach是下列值之一:
row — 该触发器由触发语句影响的每一行触发。
注意,TSQL不支持行级触发器,因此Language关键字的设置必须是objectscript。row/object — 此触发器由受触发语句或通过对象访问进行的更改影响的每一行触发。请注意,TSQL不支持行级触发器,因此Language关键字的设置必须为objectscript。这个选项定义了一个统一触发器,之所以这么叫,是因为它是由通过SQL或对象访问发生的数据更改触发的。
(相比之下,与其他触发器相比,如果在通过对象访问发生更改时使用相同的逻辑,则需要实现回调,如%OnDelete()。)
statement — 整个语句只触发一次触发器。
ObjectScript和TSQL都支持语句级触发器;
即Language关键字的设置分别为objectscript或tsql。控制何时触发触发器。
如果省略此关键字,则触发器为行级触发器。
TSQL不支持行级触发器。
指定此触发器定义是否为内部触发器(不显示在类文档中)。
指定这个类查询是否为web方法。
仅应用于定义为web服务或web客户端的类。
要指定这个查询是一个web方法,请使用以下语法:
Query name(formal_spec) As classname [ WebMethod ] { //implementation }
否则,忽略该关键字或将Not放在该关键字之前。
这个关键字指定这个类查询是否是一个web方法,是否可以通过SOAP协议调用。
如果忽略此关键字,则无法以web方法调用查询。
当你将这个关键字添加到类查询并编译类时,类编译器会生成两个额外的类:
Package.OriginalClass.QueryNamePackage.OriginalClass.QueryName.DSPackage.OriginalClass是包含web方法的类,QueryName是类查询的名称。
例如,假设从类ROBJDemo.QueryWS开始。
,然后向它添加一个名为MyQuery的类查询。
当你将WebMethod关键字添加到该类查询并编译它时,类编译器会生成以下额外的类:
ROBJDemo.QueryWS.MyQueryROBJDemo.QueryWS.MyQuery.DS不要修改或直接使用这些生成的类;它们仅供内部使用。
覆盖投影SQL存储过程的默认名称。
仅当此查询被投影为SQL存储过程时应用。
要覆盖查询投射为SQL存储过程时使用的默认名称,请使用以下语法:
Query name(formal_spec) As classname [ SqlProc, SqlName = sqlname ] { //implementation }
其中sqlname是SQL标识符。
如果将此查询投影为一个SQL存储过程,则使用此名称作为存储过程的名称。
如果忽略此关键字,查询名称将用作SQL过程名称。
指定查询是否可以作为SQL存储过程调用。
要指定查询可以作为SQL存储过程调用,请使用以下语法:
Query name(formal_spec) As classname [ SqlProc ] { //implementation }
否则,忽略该关键字或将Not放在该关键字之前。
该关键字指定是否可以作为SQL存储过程调用查询。
如果忽略此关键字,则无法将查询作为SQL存储过程调用。
指定是否将此查询投影为SQL视图。
我有一个CSP页面,当我把大量的文本(例如:10000个字符)放到一个提交的表单的一个字段中时,会出现 "414 error - Request-URI Too Long"。该表格是用POST方法提交的。
根据我做的一些实验,似乎一个URL的最大尺寸是8200个字符左右。
官方的限制是什么,是否有办法增加它?我在文档中搜索了一下,但没有找到任何东西。
指定查询是否为私有查询。
要指定此查询为私有查询,请使用以下语法:
Query name(formal_spec) As classname [ Private ] { //implementation }
否则,请省略此关键字或将该词放在该关键字之前。
私有类成员只能由同一类(或其子类)的其他成员使用。请注意,其他语言通常使用单词Protected来描述这种可见性,使用单词Private来表示从子类不可见。
如果省略此关键字,则此查询不是私有的。
指定此查询用作Web方法时使用的绑定样式或SOAP调用机制。仅适用于定义为Web服务或Web客户端的类。
要覆盖查询使用的默认绑定样式(当它用作Web方法时),请使用以下语法:
Query name(formal_spec) As classname [ WebMethod, SoapBindingStyle = soapbindingstyle ] { //implementation }
其中soapbindingstyle为下列值之一:
document - 此Web方法使用文档式调用。使用这种绑定样式,SOAP消息被格式化为文档,并且通常只有一个部分。
在SOAP消息中,<Body>元素通常包含单个子元素。
指定属性是否存储在数据库中。仅适用于持久类。
要指定属性不存储在数据库中,请使用以下语法:
Property name As classname [ Transient ];
否则,请省略此关键字或将该词放在该关键字之前。
对于持久化类,指定属性不存储在数据库中。
请注意, IRIS验证瞬态属性的方式与验证其他属性的方式相同。例如,当保存对象时,系统会验证其所有属性,包括所有临时属性。
在子类中,可以将非瞬态属性标记为瞬态Transient,但不能反过来。
如果省略此关键字,则属性不是瞬态Transient的。
此查询的客户端投影使用的别名。
要在将查询投影到客户端语言时覆盖查询的默认名称,请使用以下语法:
Query name(formal_spec) As classname [ ClientName = clientname ] { //implementation }
其中clientname是在客户端语言中使用的名称。
当查询被投影到客户端语言时,此关键字允许定义查询的替代名称。如果查询名称包含客户端语言中不允许的字符,这尤其有用。
如果省略此关键字,查询名称将用作客户端名称。
指定此查询是否为最终查询(不能在子类中覆盖)。
此关键字控制何时重新计算属性。仅适用于触发的计算属性。
要指定何时重新计算属性,请使用以下语法:
Property name As classname [ SqlComputed, SqlComputeCode=sqlcomputecode, SqlComputeOnChange = propertynames ];
其中sqlcomputecode在SqlComputeCode中描述,propertyname是单个属性名或以逗号分隔的属性名列表。该值还可以包括值%%INSERT或%%UPDATE。
请注意,必须使用实际的属性名,而不是SqlFieldname给出的值。
此关键字仅适用于触发的计算属性;对于其他属性,它将被忽略。(触发的计算属性是一个属性,其SqlComputed为真,并且指定了SqlComputeCode,但是其computed和Transient都为假)
此关键字控制重新计算此属性的条件。重新计算可能源于:
如果关键字的值为%%INSERT或%%UPDATE,则分别调用INSERT或UPDATE,指定字段(属性)值的事件触发计算。
%%INSERT,当一行被插入到表中时, IRIS计算字段值。发现官网上的native api for java教程无内容. 是不是后端出问题了.png)
指定是否将此属性投影到Java客户机。
要指定属性是否被投影到Java客户端,请使用以下语法:
Property name As classname [ ServerOnly = n ];
其中n是下列之一:
0表示此属性是投影的。1表示不投影该属性。此关键字指定属性是否被投影到Java客户端。
如果省略此关键字,属性将被投影。
指定此属性的SQL列号。仅适用于持久类。
要指定属性的SQL列号,请使用以下语法:
Property name As classname [ SqlColumnNumber = 4 ];
其中n是正整数。
此关键字允许显式设置此属性的SQL列号。这是为了支持传统应用程序而提供的。
默认值为空字符串。
指定设置此属性值的代码。
要指定属性的计算方式,请使用以下语法:
Property name As classname [ SqlComputeCode = { Set {FieldName} = Expression }, SqlComputed ];
FieldName—正在定义的属性的SQL字段名称。Expression—对象指定属性值的脚本表达式。指定删除相关对象时在当前表中采取的操作。此关键字仅适用于将基数Cardinality 指定为“父”或“一”的关系属性。它的使用在所有其他上下文中都是无效的。
要指定删除相关对象时在当前表中采取的操作,请使用以下语法:
Relationship relname As classname [ Cardinality = cardinality, Inverse = inverse, OnDelete = ondelete ];
其中ondelete是以下值之一。在本讨论中,相关记录是属于关系另一方的记录或对象,引用记录是关系这一方的记录或对象。
cascade级联—删除相关记录时,也会删除该表中的引用记录。noaction无操作—当试图删除相关记录时,尝试会失败。setdefault —删除相关记录时,该表中的引用记录将被设置为其默认值。setnull —删除相关记录时,该表中的引用记录将被设置为null。此关键字定义了在关系的另一端删除记录时发生的引用操作。
如果忽略此关键字,则:
Cardinality 基数为父的关系,OnDelete是级联的。也就是说,当删除父记录时,默认情况下,关联的子记录将被删除。OnDelete为noaction。指定此属性的初始值。
要指定此属性的初始值,请使用以下语法:
Property name As classname [ InitialExpression = initialexpression ];
其中,initialexpression是用大括号括起来的常量或ObjectScript表达式。
此关键字指定属性的初始值。该值是在创建新实例时由类的%New()方法分配的。(如果属性是瞬态的的,则其初始值由创建实例时%New()调用的代码或实例从磁盘加载到内存时%OpenId()调用的代码确定。)
初始表达式的值必须适合给定的属性类型。
表达式可以是任意复杂的,有以下限制:
..therPropertyname}这样的表达式无效。子类继承InitialExpression关键字的值并可以重写它
不推荐使用的方法是指定集合属性的集合类型。不要使用。
此关键字已被“as”语法替换。
指定此属性已弃用。此关键字被类编译器忽略,仅提供属性已弃用的人类可读指示符。
要指定不推荐使用此属性,请使用以下语法:
Property name As classname [ Deprecated ];
否则,请省略此关键字或将该词放在该关键字之前。
指定此属性是否为最终属性(不能在子类中重写)。
要指定属性为最终属性,请使用以下语法:
Property name As classname [ Final ];
否则,请省略此关键字或将该词放在该关键字之前。
标记为Final的类成员不能在子类中被重写。
如果省略此关键字,则该属性不是最终属性。
指定此属性是否对应于相应SQL表中的IDENTITY列。适用于持久类。
要指定此属性对应于相应SQL表中的IDENTITY列,请使用以下语法:
Property name As %Integer [ Identity ];
注意:属性类型可以是任何整数类型,例如%BigInt、%Integer、%SmallInt或%TinyInt。
我最近看到一个客户问题,是使用 Caché 数据库上运行的病毒扫描程序导致应用程序间歇性变慢和用户响应时间不佳。
出乎意料的是,这是一个常见问题,所以本帖就是提个醒,要将主要 Caché 组件排除在病毒扫描之外。
通常,病毒扫描必须排除 CACHE.DAT 数据库文件和 Caché 二进制文件。 如果防病毒软件扫描 CACHE.DAT 和 InterSystems 文件,那么系统性能_将_受到较大影响。
具体来说,防病毒软件必须排除的 Caché 文件包括:
更多详细信息,请参见在线文档。
指定此属性的其他名称,以便通过对象访问使用。
要为属性指定其他名称,请使用以下语法:
Property name As classname [ Aliases=othernames ];
其中othernames是用逗号分隔的有效属性名列表,用大括号括起来。
如果指定别名关键字,编译器会创建一个或多个给定的别名,这些别名指向原始属性所指向的同一基础数据。例如,重新定义Sample.Person的Name属性,如下所示:
Property Name As %String(POPSPEC = "Name()") [ Aliases = {Alternate}, Required ];
然后,代码可以使用Name属性或等效的Alternate属性,如以下终端会话所示:
SAMPLES>set p=##class(Sample.Person).%OpenId(1)
SAMPLES>w p.Name
Fripp,Charles Z.
SAMPLES>w p.Alternate
Fripp,Charles Z.
SAMPLES>set p.Alternate="Anderson,Neville J."
SAMPLES>w p.Name
Anderson,Neville J.指定此参数是否为final(不能在子类中重写)
要指定参数为final最终参数,请使用以下语法:
Parameter name As parameter_type [ Final ] = value;
否则,请省略此关键字或将该词放在该关键字之前。
标记为Final的类成员不能在子类中被重写。
如果省略此关键字,则该参数不是最终参数。
修改此参数的用户接口类型(在Studio中)。
要修改此参数的用户接口类型(在Studio中),请使用以下语法:
Parameter name As parameter_type [ Flags = flags ] = value;
其中,flags 为以下值之一:
ENUM-该参数是由Constraint关键字(逗号分隔列表)指定的值之一。检查器将提供这些值的下拉列表。LIST -参数值是由逗号分隔的项目列表组成的字符串。请注意,不使用EDIT、EMPTY和SYS。
修改参数的用户界面类型(在Studio中)。Studio使用此类型为检查器中的参数提供输入验证。类编译器忽略此关键字。
如果省略此关键字,则Studio只允许该参数使用单个值(并且不提供选项下拉列表)。
指定此投影定义是否是内部的(不显示在类文档中)。
指定此方法是否为web method。仅适用于定义为web service或web客户端的类。
要指定此方法是web方法,请使用以下语法:
Method name(formal_spec) As returnclass [ WebMethod ]
{ //implementation }
否则,省略此关键字或将单词Not放在关键字的前面。
此关键字指定此方法作为web方法可用,并且可以通过SOAP协议调用。
重要:在大多数情况下,web方法应该是实例方法,而不是类方法。
如果省略此关键字,则该方法不能作为web method使用。
当将此关键字添加到方法并编译类时,类编译器将生成一个额外的类:Package.OriginalClass.MethodName。Package.OriginalClass是包含web方法的类,MethodName是web方法的名称。
例如,从类ROBJDemo.DocLiteralWS开始。然后添加一个名为add的方法。当将WebMethod关键字添加到该方法并进行编译时,类编译器将生成类ROBJDemo.DocLiteralWS.Add。
不要修改或直接使用这个生成的类; 仅供内部使用。
对于web服务,该关键字还会影响生成的WSDL,后者现在包含表示此web方法所需的附加元素。
当多个web方法具有相同的SoapAction时使用此方法。
在默认场景中,该关键字指定请求消息的SOAP正文中的顶级元素的名称。
仅适用于定义为web服务或web客户端的类。
要在请求消息的SOAP体中指定顶级元素的名称,请使用以下语法:
Method name(formal_spec) As returnclass [ WebMethod, SoapAction = "MyAct", SoapRequestMessage="MyReqMessage" ]
{ //implementation }
其中soaprequestmessage是有效的XML标识符。
注意:此关键字仅对包装的文档/文字document/literal消息有效。
对于包装的文档/文字消息,该关键字指定请求消息的SOAP主体中的顶部元素的名称。(默认情况下,包装文档/文字消息。
如果对同一web服务中的多个web方法使用相同的SoapAction值,请指定此关键字。否则,一般不需要这个关键字。
SoapRequestMessage关键字影响web服务的WSDL的<Message>部分。
指定此方法用作web方法时使用的绑定样式或SOAP调用机制。仅适用于定义为web服务或web客户端的类。
若要重写方法使用的默认绑定样式(当它用作web方法时),请使用以下语法:
Method name(formal_spec) As returnclass [ WebMethod, SoapBindingStyle = soapbindingstyle ]
{ //implementation }
其中soapbindingstyle是下列之一:
document文档(默认)—此web方法使用文档样式的调用。使用这种绑定风格,SOAP消息被格式化为文档,并且通常只有一个部分。
在SOAP消息中,<Body>元素通常包含一个子元素。<Body>元素的每个子元素对应于一个消息部分。
rpc —这个web方法使用rpc(远程过程调用)风格的调用。使用这种绑定风格,SOAP消息被格式化为具有多个部分的消息。
在SOAP消息中,<Body>元素包含一个子元素,其名称取自相应的操作名称。这个元素是一个生成的包装元素,它为方法的参数列表中的每个参数包含一个子元素。
重要提示:对于手动创建的web服务,该关键字的默认值通常是合适的。