Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Nazwa kolumny i/lub nazwa tabeli jako parametry

Musisz użyć dynamicznego SQL — nie możesz używać parametrów jako nazw tabel lub kolumn. Czyli coś takiego:

CREATE TABLE #temp (newcol nvarchar(500)) -- Use the type you're getting out of @TableName
DECLARE @TableName nchar(20) = 'MyTable'
DECLARE @ColumnName nchar(20) = 'MyColumn'

EXEC('INSERT INTO #temp SELECT [' + @ColumnName + '] FROM [' + @TableName + ']')

DECLARE UpdateList CURSOR FOR
SELECT newcol FROM #temp
OPEN UpdateList

Proszę pamiętać o problemach z bezpieczeństwem i wydajnością związanych z dynamicznym SQL — nie wiem, w jaki sposób będziesz zapełniać zmienne tutaj, a robienie tego może wiązać się z pewnym niebezpieczeństwem.

EDYCJA:Dodano pełny kod.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak naprawić „Schemat partycji ‚…’ nie ma żadnej następnej używanej grupy plików” w SQL Server

  2. SQL Server 2008 Pusty ciąg a spacja

  3. Jak wybrać rekordy, które nie istnieją na serwerze SQL?

  4. Transponuj zestaw wierszy jako kolumny w SQL Server 2000

  5. MAX vs Top 1 - co jest lepsze?