sql >> Database >  >> RDS >> Sqlserver

Is er een manier om de tabelnaam als een tekenreeks op te geven?

Je kunt het als volgt in een EXEC-statement plaatsen:

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

Maar nee, intellisense werkt niet in dat scenario.

Als u van tevoren weet hoe uw uitvoer eruit zal zien, kunt u een tijdelijke tabel declareren om de resultaten te bewaren, en dan kunt u die openen zonder EXEC. Je hebt intelligentie op de tijdelijke tafel.

Bijvoorbeeld:

  --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. Eclipse Hibernate.cfg.xml koppelt de sys-database van MySQL

  2. SQL Kleiner dan of gelijk aan (=) Operator voor beginners

  3. hoe te voorkomen dat de database een schuine streep aan aanhalingstekens toevoegt

  4. PHP-instructie Moet meerdere objecten retourneren, maar retourneert slechts één