2011-11-10 34 views

回答

3

它的確如此。

declare @name sysname = N'sys.objects'; 
select object_id(@name); 


----------- 
-385 

(1 row(s) affected) 

在你的例子中,你聲明瞭一個長度爲1的變量(因爲你是omit the length)。 OBJECT_ID(N'M')找不到任何內容並返回NULL。

當在數據定義或變量聲明 聲明不指定n,則默認長度爲1.當不與 CAST函數指定n,則默認長度爲30

+0

嗯,我看到了答案......但正如你所看到的問題是在聲明變量作爲NVARCHAR VS一個SYSNAME。 – davesbrain

+0

@davesbrain:sysname只是nvarchar與其他的東西。即,一個指定的長度和iirc,非空性。 http://msdn.microsoft.com/en-us/library/ms191240.aspx –

2

你的問題是你錯過了你的尺寸NVARCHAR

這工作:

DECLARE @tn NVARCHAR(20) 
SET @tn = 'MyTable' 
SELECT OBJECT_ID(@tn) 
相關問題