2011-11-10 3 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 CAST関数で指定されていない場合には、N、デフォルトの長さは、デフォルトの長さは30

+0

まあ、私は答えを見に...しかし、あなたは問題がSYSNAME対NVARCHARとして変数を宣言して見ることができるように。 – davesbrain

+0

@davesbrain:sysnameは他のものとちょうどnvarcharです。つまり、指定された長さとiirc、null許容されません。 http://msdn.microsoft.com/en-us/library/ms191240.aspx –

2

1です。あなたの問題は、あなたのNVARCHARのサイズが足りないことです。

これは動作します:

DECLARE @tn NVARCHAR(20) 
SET @tn = 'MyTable' 
SELECT OBJECT_ID(@tn) 
関連する問題