在变量名称上使用@

时间:2015-05-13 22:23:15

标签: db2 db2-400

谷歌搜索我发现了这个DB2函数声明:

CREATE FUNCTION QGPL.SPLIT ( 
@Data     VARCHAR(32000), 
@Delimiter VARCHAR(5)
)

什么意思是变量名之前的@符号?

此致

佩德罗

1 个答案:

答案 0 :(得分:2)

@字符只是SQL标识符[变量名称]的第一个字符,它命名为用户定义函数(UDF)的参数定义的参数;稍微重新格式化[因为乍一看我认为修改可能会使符号更明显地成为名称的一部分,尽管现在我认为可能不是]:

 CREATE FUNCTION QGPL.SPLIT
 ( @Data      VARCHAR(32000)
 , @Delimiter VARCHAR(5)
 ) returns ...

简单地说,强烈建议不要在标识符中使用@字符;使用此类变体字符,虽然支持在标准对象命名中,但它们可能会带来巨大的痛苦和困难,包括一些难以克服的:

http://www.ibm.com/support/knowledgecenter/api/content/ssw_ibm_i_71/db2/rbafzch2iden.htm

  

<强>标识符   
  标识符是用于形成名称的标记。 SQL语句中的标识符是SQL标识符,系统标识符或主机标识符。   注意:$,@,#和所有其他变体字符不应在标识符中使用,因为用于表示它们的代码点会根据包含它们的字符串的CCSID而有所不同。如果使用它们,可能会出现不可预测的结果。 [...]

[编辑 - 附录17May2015]

http://www.ibm.com/support/knowledgecenter/api/content/nl/en-us/SSEPGG_10.5.0/com.ibm.db2.luw.admin.dbobj.doc/doc/c0004625.html

  

在多国语言环境中命名规则   
  可以在数据库名称中使用的基本字符集由单字节大写和小写拉丁字母(A ... Z,a ... z),阿拉伯数字(0 ... 9)和下划线字符(_)组成。   

  此列表使用三个特殊字符(#,@和$)进行扩充,以提供与主机数据库产品的兼容性。在多国语言环境中小心使用特殊字符#,@和$,因为它们不包含在多国语言主机(EBCDIC)不变字符集中。也可以使用扩展字符集中的字符,具体取决于正在使用的代码页。如果在多代码页环境中使用数据库,则必须确保所有代码页都支持您计划使用的扩展字符集中的任何元素。   [...]

[/ Edit-addendum 17May2015]