2011-08-02 124 views
6

我所遇到下面的示例代碼:在MS SQL Server 2008下的T-SQL中,'@'在參數*值*前面表示什麼?

EXECUTE msdb.dbo.sysmail_add_profileaccount_sp   
          @profile_name = @'SQL mail profile',   
          @account_name = @'account name',   
          @sequence_number = 1 ;  

什麼是「@」指的是在字符串字面量的前面,如上面的例子:

@[email protected]'account name' 

我明白我的問題可能對T-SQL中任何可執行模塊的參數都適用,或者對於T-SQL中的任何字符串常量都適用,所以以上只是我正在看的一個具體示例。

+0

你從哪裏遇到過這樣的代碼? –

+0

從[SQLServerCentral](http://www.sqlservercentral.com/Forums/FindPost982744.aspx)得到它。 – dawebber

+0

嗯,奇怪,因爲這裏的兩個答案都是正確的,這在T-SQL中是無效的語法。你*可能會找到能夠在[dba.se]上揭示這一點的人,但我不這麼認爲。如果你決定在那裏發佈它,你應該確保你從你在評論中鏈接到的那個頁面中拷貝相關的位,以避免強迫人們去尋找代碼。但我同意,看起來很奇怪,它的格式化似乎表明它是現有代碼的副本,因此我認爲它已經過測試。 –

回答

4

我不認爲這是有效的T-SQL。這可能是在腳本中用值替換變量的變形,而不是修剪前導@。

+0

這也是我的想法,加上SSMS不喜歡語法,我在BOL中沒有發現這種效果,所以我會接受這個答案。 – dawebber

2

我得到一個語法錯誤,所以我不認爲這意味着任何東西,但它不是有效的語法。您是否從僅使用T-SQL調用的有效T-SQL中抽取了這些內容,或者這是來自其他某種語言或程序的參數化內容?

+0

它是通過動態SQL生成的。請參閱我對@Lasse V. Karlsen的評論以獲取源代碼鏈接 – dawebber

+0

我認爲這只是他們代碼中的一個錯誤。 –

+0

- 完全可能,我同意,我被代碼片段中看似故意放置的@字符拖延了。 – dawebber

相關問題