我們必須使用在那裏我們的應用程序通過一些列的名稱動態SQL內置存儲過程。偶爾空白值或空值傳遞給列名稱。在這些情況下,sp需要爲該列返回空值。我試着處理這一點,但無論我做什麼我各種方法似乎得到以下錯誤:處理空白列在動態SQL
An object or column name is missing or empty. For SELECT INTO statements, verify each column has a name. For other statements, look for empty alias names. Aliases defined as "" or [] are not allowed. Change the alias to a valid name.
下面是一個例子查詢,試圖在@ col2的參數去處理空列名時情況:
DECLARE
@Col1 varchar(32) = 'name',
@Col2 varchar(32) = '',
@sqlCommand nvarchar(MAX) = ''
SET @sqlCommand = @sqlCommand + N'
SELECT ' + quotename(@Col1) + ' AS ' + quotename(@Col1) + ',
CASE WHEN ' + quotename(@Col2) + ' IS NULL OR ' + quotename(@Col2) + ' = ''''
THEN NULL
ELSE ' + quotename(@Col2) + '
END AS Col2
FROM sys.columns c '
EXECUTE sp_executesql @sqlCommand
什麼版本的sql server? –
更換'EXECUTE sp_executesql的@ sqlCommand'用'打印@ sqlCommand',查看您正在生成的SQL,你可能會發現這一問題很快... – JohnLBevan
SQL SERVER 2014年,感謝您的幫助 – Andrew