2

これは問題ありません:

select COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,IS_NULLABLE 
from [AdventureWorks2012].INFORMATION_SCHEMA.COLUMNS WHERE table_name='employee';

ただし、動的ステートメントに移動すると、常に失敗します。

begin
DECLARE @sqlstatement VARCHAR(MAX);
DECLARE @TableName varchar(max)='employee';

set @sqlstatement='select COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,IS_NULLABLE
from [AdventureWorks2012].INFORMATION_SCHEMA.COLUMNS WHERE table_name='+@TableName;
print (@sqlstatement);
EXECUTE(@sqlstatement);

end

エラー:無効な列名「employee」

4

2 に答える 2

9

table_name列は文字列なので、一重引用符で囲む必要があります。

set @sqlstatement='select COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,IS_NULLABLE
from [AdventureWorks2012].INFORMATION_SCHEMA.COLUMNS WHERE table_name='''+@TableName+'''';
于 2013-06-04T00:34:47.463 に答える