Wir haben eine gespeicherte Prozedur dynamische SQL gebaut mit denen unsere Anwendung in einigen Spaltennamen übergeben. Gelegentlich werden Leer- oder Nullwerte für den Spaltennamen übergeben. In diesen Fällen muss der SP einen Nullwert für die Spalte zurückgeben. Ich habe verschiedene Wege versucht, dies zu handhaben, aber alles, was ich tun, ich zu sein scheinen, den Fehler zu erhalten unter:Umgang mit leeren Spalten in dynamischen 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.
Hier ist ein Beispiel Abfrage mit Fall bei dem Versuch, in der @ Col2 param null Spaltennamen zu handhaben:
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
welche Version von SQL Server? –
Ersetzen 'EXECUTE Sp_executesql @ sqlCommand' mit' print @ sqlCommand' die SQL Sie erzeugen, zu sehen und Sie werden wahrscheinlich das Problem ziemlich schnell ... – JohnLBevan
SQLServer 2014, vielen Dank für Ihre Hilfe – Andrew