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

Dynamiczne tworzenie tabeli w tsql

Czy mógłbyś użyć czegoś takiego?

DECLARE @Tab VARCHAR(MAX)
SET @Tab = 'CREATE TABLE #Whatever ('

SELECT @Tab = @Tab + QUOTENAME(ColumnName) + ' INT NULL
,'
FROM @This
SELECT @Tab = SUBSTRING(@Tab,1,LEN(@Tab)-1) + ')'
PRINT @Tab
-- EXEC (@Tab)

Dwie uwagi:Może się okazać, że będziesz musiał utworzyć tabelę tymczasową bez użycia dynamicznego sql, a następnie dostosować instrukcję select, aby zmienić tabelę; dzieje się tak, aby tabela istniała w bieżącym kontekście - jeśli instrukcja create jest w dynamice, możesz otrzymać błąd.

Nie lubię używać dynamicznego sql w ten sposób - jeśli mógłbyś później użyć osi do zwrócenia kolumn, może to być lepsza opcja (nie jestem pewien, czy w tym przypadku jest to możliwe).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zaimplementuj funkcję stronicowania (pomiń / weź) za pomocą tego zapytania

  2. SQL Server:Jak uzyskać odwołanie do klucza obcego z information_schema?

  3. Różnica między różnymi typami ciągów w SQL Server?

  4. Problem z wyodrębnianiem daty w SQL Server

  5. Zrozumienie blokady SQL Server w bezpiecznym środowisku bazy danych