2015-05-13 42 views
0

谷歌搜索,我發現這個DB2函數聲明使用@:在變量名

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

請告訴我意味着@符號變量名的前面?

問候,

佩德羅

+0

「@」 並不意味着什麼特別的,它只是對參數或變量名的有效字符之一。有些人使用「@」作爲前綴來區分例程參數與本地變量或列名稱。 – mustaccio

回答

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)和底部數字e字符(_)。

此列表增加了三個特殊字符(#,@和$)以提供與主機數據庫產品的兼容性。在多國語言環境中小心使用特殊字符#,@和$,因爲它們不包含在多國語言主機(EBCDIC)不變字符集中。取決於正在使用的代碼頁,也可以使用擴展字符集中的字符。如果您在多代碼頁環境中使用數據庫,則必須確保所有代碼頁都支持您打算使用的擴展字符集中的任何元素。 [...]

[/編輯,編17May2015]

+0

謝謝你的附錄,CRPence –