Transact-SQL und COM
Methodenaufrufe
Methoden werden in Transact-SQL über die Prozedur sp_OAMethod aufgerufen.
Als Parameter wird der Objekt-Handle, der Name der Methode und evtl. Ausgabeparameter angegeben.
Das Abfragen von Eigenschaften kann übrigens auch über diese Prozedur erfolgen.
Beispiel: Lesen einer Textdatei mit Hilfe des Scripting.FileSystemObjects
-- Beispiel sp_OAMethod -- Um die Übersichtlichkeit zu erhöhen wurde auf die Fehlerbehandlung verzichtet...
-- Dieses Transact-SQL Script liest den Inhalt einer Textdatei zeilenweise in eine
-- temporäre Tabelle
-- Zum Lesen der Datei wird das Scripting.FilesystemObject verwendet.
-- Dieses Beispiel dient nur Demozwecken. Für den Import von Textdateien sind bcp und
-- DTS besser geeignet
-- Fragen, Kommentare? Bitte Email an sql@itrain.de
SET NOCOUNT ON DECLARE @hr int DECLARE @fso int DECLARE @fsStream int DECLARE @AtEndOfStream int -- Erzeugen einer temporären Tabelle für eingelesene Zeilen CREATE TABLE #DateiInhalt (zeilenr int IDENTITY, zeile text) -- Erzeugen eines Scripting.FileSystemObjects EXEC @hr = master.dbo.sp_OACreate 'Scripting.FileSystemObject' ,@fso OUTPUT print @hr -- Öffnen einer Textdatei EXEC @hr = master.dbo.sp_OAMethod @fso, 'OpenTextFile', @fsStream OUTPUT, 'C:\orders.txt' print @hr -- Prüfen auf Dateiende EXEC @hr = master.dbo.sp_OAMethod @fsstream, 'AtEndOfStream', @AtEndOfStream OUTPUT WHILE @AtEndOfStream = 0 BEGIN -- Nächste Zeile lesen und in Tabelle #Dateiinhalt schreiben INSERT INTO #DateiInhalt (zeile) EXEC @hr = master.dbo.sp_OAMethod @fsStream, 'ReadLine' -- Prüfen auf Dateiende EXEC @hr = master.dbo.sp_OAMethod @fsstream, 'AtEndOfStream', @AtEndOfStream OUTPUT END -- Textstream-Objekt zerstören EXEC @hr = master.dbo.sp_OADestroy @fsstream -- FilesystemObject zerstören EXEC @hr = master.dbo.sp_OADestroy @fso -- Inhalt der temporären Tabelle anzeigen lassen SELECT * FROM #Dateiinhalt DROP TABLE #Dateiinhalt
|