sql >> Database teknologi >  >> RDS >> Sqlserver

Er der en måde at angive tabelnavn som en streng?

Du kan pakke det ind i en EXEC-sætning som denne:

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

Men nej, intellisense vil ikke fungere i det scenarie.

Hvis du ved, hvordan dit output vil se ud på forhånd, så kan du erklære en midlertidig tabel til at holde resultaterne, og så kan du få adgang til det uden EXEC. Du vil have intellisense på vikarbordet.

For eksempel:

  --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. Er det muligt at GRUPPE BY flere kolonner ved hjælp af MySQL?

  2. Multiple REPLACE-funktion i Oracle

  3. Konvertering af mysql til mysqli - hvordan får man et superglobalt forbindelsesobjekt?

  4. Easysoft ODBC-drivere og ODBCINST-biblioteket