Heim >Datenbank >MySQL-Tutorial >Wie füge ich gespeicherte Prozedurergebnisse in eine temporäre Tabelle ein, ohne deren Struktur zu definieren?

Wie füge ich gespeicherte Prozedurergebnisse in eine temporäre Tabelle ein, ohne deren Struktur zu definieren?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-25 02:32:13330Durchsuche

How to Insert Stored Procedure Results into a Temporary Table Without Defining its Structure?

Einfügen gespeicherter Prozedurergebnisse in eine temporäre Tabelle ohne vordefinierte Struktur

Problem: Wie kann man eine temporäre Tabelle mit den Ergebnissen einer gespeicherten Prozedur füllen, ohne das Tabellenschema vorher explizit zu definieren?

Lösung: Nutzen Sie die Funktion OPENROWSET. Diese Funktion führt eine Remote-Abfrage aus und fügt die Ergebnisse direkt in eine temporäre Tabelle ein, wobei die Tabellenstruktur dynamisch aus der Ausgabe der Abfrage abgeleitet wird.

Hier ist ein Beispiel:

<code class="language-sql">-- Sample Stored Procedure
CREATE PROC getBusinessLineHistory
AS
BEGIN
    SELECT * FROM sys.databases
END
GO

-- Enable Ad Hoc Distributed Queries (required for OPENROWSET)
sp_configure 'Show Advanced Options', 1
GO
RECONFIGURE
GO
sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
GO

-- Insert results into temporary table using OPENROWSET
SELECT * INTO #MyTempTable FROM OPENROWSET('SQLNCLI', 'Server=(local)\SQL2008;Trusted_Connection=yes;',
     'EXEC getBusinessLineHistory')

-- Verify the data
SELECT * FROM #MyTempTable</code>

Dieser Code definiert zunächst eine gespeicherte Beispielprozedur (getBusinessLineHistory). Entscheidend ist, dass dann „Ad-hoc-verteilte Abfragen“ mithilfe von sp_configure aktiviert werden. Dies ist Voraussetzung für die Verwendung von OPENROWSET.

OPENROWSET führt die gespeicherte Prozedur remote aus und die zurückgegebenen Daten werden automatisch in #MyTempTable eingefügt. Die Struktur der temporären Tabelle wird dynamisch basierend auf den von der gespeicherten Prozedur zurückgegebenen Datentypen erstellt. Abschließend bestätigt eine SELECT-Anweisung das erfolgreiche Einfügen der Daten. Dieser Ansatz vermeidet die Notwendigkeit, das Schema der temporären Tabelle manuell zu definieren.

Das obige ist der detaillierte Inhalt vonWie füge ich gespeicherte Prozedurergebnisse in eine temporäre Tabelle ein, ohne deren Struktur zu definieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn