it-swarm.com.de

Holen Sie sich die Struktur der temporären Tabelle (wie SQL-Skript generieren) und löschen Sie die temporäre Tabelle für die aktuelle Instanz

Wie bekomme ich die Struktur der temporären Tabelle und lösche dann die temporäre Tabelle. Gibt es einen sp_helptext für temporäre Tabellen? Ist es schließlich möglich, die temporäre Tabelle in derselben Sitzung oder demselben Abfragefenster zu löschen?

Beispiel:

select *
into #myTempTable  -- creates a new temp table
from tMyTable  -- some table in your database

tempdb..sp_help #myTempTable

Referenz .

55
RetroCoder

Sie müssen den Namen der temporären Tabelle in Anführungszeichen setzen und können die temporäre Tabelle direkt nach Verwendung von drop table ... Löschen.

select *
into #myTempTable  -- creates a new temp table
from tMyTable  -- some table in your database

exec tempdb..sp_help '#myTempTable'

drop table #myTempTable
103
Mikael Eriksson

Solange ich weiß, gibt es keinen SP_HelpText für Tabellen. Versuche dies:

Select * From tempdb.sys.columns Where object_id=OBJECT_ID('tempdb.dbo.#myTempTable');
10
Geri Reshef

Ich musste in der Lage sein, eine temporäre Tabelle in einem Skript neu zu erstellen. Daher habe ich den folgenden Code verwendet, um den Spaltenteil der Anweisung CREATE TABLE zu generieren:

SELECT char(9) + '[' + c.column_name + '] ' + c.data_type 
   + CASE WHEN c.data_type IN ('decimal')
      THEN isnull('(' + convert(varchar, c.numeric_precision) + ', ' + convert(varchar, c.numeric_scale) + ')', '') 
      ELSE '' END
   + CASE WHEN c.IS_NULLABLE = 'YES' THEN ' NULL' ELSE '' END
   + ','
From tempdb.INFORMATION_SCHEMA.COLUMNS c 
WHERE TABLE_NAME LIKE '#myTempTable%' 

Ich habe nicht alle SQL-Datentypen getestet, aber dies funktionierte für int, float, datetime, money und bit.

Außerdem hat - ApexSQL Complete (kostenlos) eine nette Funktion, mit der Sie Rasterergebnisse in eine Insert Into - Anweisung exportieren können. Ich habe dies verwendet, um diese erstellte temporäre Tabelle in mein Skript zu laden. ApexSQL Copy Results As Insert into statement

9
dajo

exec sp_columns table_name;

beispiel

mitarbeiter von exec sp_columns;

3
Ravi Kumar
Select * From tempdb.INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME LIKE '#yourtemp%'
2
flyreaver

Das hat mir also geholfen. Es wurden die Tabellenspalten erstellt.

Select Column_Name + ' [' + DATA_TYPE + ']' + 
case when Data_Type in ('numeric', 'varchar', 'char')
    then '(' +
        case
            when DATA_TYPE = 'numeric' then CAST(numeric_precision as varchar(3)) + ',' + CAST(numeric_scale as varchar(3))
            when DATA_TYPE = 'varchar' then CAST(CHARACTER_MAXIMUM_LENGTH as varchar(3))
            when DATA_TYPE = 'char' then CAST(CHARACTER_MAXIMUM_LENGTH as varchar(3))
        end
         + ')'
    else ''
end
+ ','
, * 
From tempdb.INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME LIKE '#MEHTEMPTABLE%'

Alles, was ich dann tun musste, war, diese Punkte in eine Tabellenerklärung zu kopieren

Declare @MyTable Table
(
--All columns here
)

Das hätte mein Problem gelöst, aber ich war unter Zeitdruck

0
Gawie Greef