Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Apakah ada cara untuk menentukan nama tabel sebagai string?

Anda dapat membungkusnya dalam pernyataan EXEC seperti ini:

declare @my_tablename nvarchar(100) = 'mytable';
exec('
SELECT * FROM 
(
  SELECT * FROM 
  (
    SELECT * FROM ' + @my_tablename + '
  )
  INNER JOIN ' + @my_tablename + ' ON ...'
);

Tapi tidak, intellisense tidak akan bekerja dalam skenario itu.

Jika Anda tahu seperti apa output Anda sebelumnya, maka Anda dapat mendeklarasikan tabel temp untuk menampung hasilnya, dan kemudian Anda dapat mengaksesnya tanpa EXEC. Anda akan memiliki intellisense di tabel sementara.

Misalnya:

  --this must match whatever your SELECT is going to return
  CREATE TABLE #results(
    FIELD1 INT
   ,FIELD2 NVARCHAR(100)
   ,FIELD3 BIT
   );

EXEC('
  INSERT INTO #results(field1,field2,field3)
  SELECT FIELD1,FIELD2,FIELD3 FROM ' + @my_tablename
);

select * from #results  --you will have intellisense on #results


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Real vs. Floating Point vs. Uang

  2. Bagaimana cara membersihkan (mencegah injeksi SQL) SQL dinamis di SQL Server?

  3. Apakah mungkin untuk menghapus dari beberapa tabel dalam pernyataan SQL yang sama?

  4. Memahami Ukuran Penyimpanan 'datetimeoffset' di SQL Server

  5. Menghitung Pelanggan baru per Bulan