itrain-home Kinderpatenschaften mit Plan Deutschland  
home
 Aktuelle Seite:  knowhow sql tsql com create.asp 
 



 

Transact-SQL und COM

Erzeugen von COM-Objekten

Mit Hilfe der gespeicherten Prozedur sp_OACreate können COM-DLLs instantiiert werden. Diese Prozedur ist also in etwa das Transact-SQL Pendant zu CreateObject in VBScript.

Als Parameter wird dabei der Name oder die Class-ID (CLSID) der gewünschten Komponenten angegeben.
Als Ausgabeparameter wird ein Handle auf das erzeugte Objekt zurück geliefert.

Konnte das Objekt nicht erfolgreich erzeugt werden, so wird ein RETURN-CODe ungleich 0 zurückgegeben. Zur Auswertung der Fehlermeldung kann die Prozedur sp_OAGetErrorInfo verwendet werden.

Nach der Verwendung eines COM-Objekts sollte es mit Hilfe der Prozedur sp_OADestroy wieder freigegeben werden. Diese Prozedur erwartet als Parameter den Objekthandle.

Beispiele

Auf dieser Seite finden Sie Beispiele zum Erzeugen der folgenden COM-Objekte:

ADO.Connection

ADOX.Catalog

DMO.SQLServer

DTS.Package

Scripting.FilesystemObject

WScript.Shell

VBScript.RegExp

sp_OACreate

Syntax:

EXEC @hr = master.dbo.sp_OACreate prog-identifier|clsid, @objekt OUTPUT

Zusätzlich kann als weiterer Parameter noch festgelegt werden, ob die Komponenten In- oder Out-of Process erstellt werden soll. Wird dieser Parameter weggelassen, so wird die Komponente nach Möglichkeit In-Process erstellt.

Parameter:


sp_OADestroy

Syntax:

EXEC @hr = master.dbo.sp_OADestroy @objekt

Zusätzlich kann als weiterer Parameter noch festgelegt werden, ob die Komponenten In- oder Out-of Process erstellt werden soll. Wird dieser Parameter weggelassen, so wird die Komponente nach Möglichkeit In-Process erstellt.

Parameter:


Beispiele zur Objekterstellung und -zerstörung

Erstellen eines DMO.SQLServer Objekts

-- DMO.SQLServer  
 --  
 DECLARE @hr        int  
 DECLARE @sqlserver int  
 -- Instanziieren eines SQLServer Objekts:  
 EXEC @hr = master.dbo.sp_OACreate 'SQLDMO.SQLServer', @sqlserver OUTPUT  
 IF @hr = 0  
  PRINT 'SQLServer Objekt erzeugt.'  
 ELSE  
  PRINT 'Fehler beim Erstellen eines SQLDMO.SQLServer Objekts'  
   
 -- Objekt wieder freigeben:  
 EXEC @hr = master.dbo.sp_OADestroy @sqlserver  
 PRINT @hr  
 GO

Erstellen eines ADO.Connection Objekts

-- ADO.Connection  
 --  
 DECLARE @hr int  
 DECLARE @verbindung int  
 -- ADODB.Connection Objekt instantiieren  
 EXEC @hr = master.dbo.sp_OACreate 'ADODB.Connection', @verbindung OUTPUT  
 IF @hr = 0   
  PRINT 'ADODB.Connection Objekt erzeugt.'  
 ELSE  
  PRINT 'Fehler beim Erstellen des ADODB.Connection Objekts'  
   
 -- Objekt wieder freigeben  
 EXEC @hr = master.dbo.sp_OADestroy @verbindung  
 PRINT @hr  
 GO  
 

Erstellen eines ADOX.Catalog Objekts

-- ADOX.Catalog  
 --  
 DECLARE @hr      int  
 DECLARE @katalog int  
 -- Instantiieren eines ADOX.Catalog Objekts  
 EXEC @hr = master.dbo.sp_OACreate 'ADOX.Catalog', @katalog OUTPUT  
 IF @hr = 0  
  PRINT 'ADOX.Catalog Objekt erzeugt.'  
 ELSE  
  PRINT 'Fehler beim Erzeugen eines ADOX.Catalog Objekts'  
   
 -- Objekt wieder freigeben  
 EXEC @hr = master.dbo.sp_OADestroy @katalog  
 PRINT @hr  
 GO

Erstellen eines Scripting.FileSystemObjekts

-- Scripting.FilesystemObject  
 --  
 DECLARE @hr  int  
 DECLARE @fso int  
 -- Erzeugen eines Scripting.Filesystem Objekts  
 EXEC @hr = master.dbo.sp_OACreate 'Scripting.FilesystemObject', @fso OUTPUT  
 IF @hr = 0  
  PRINT 'Scripting.FilesystemObject erzeugt.'  
 ELSE  
  PRINT 'Fehler beim Erzeugen des Scripting.Filesystemobjekts'  
   
 -- Objekt wieder freigeben  
 EXEC @hr = master.dbo.sp_OADestroy @fso  
 PRINT @hr   
 GO

Erstellen eines Wscript.Shell Objekts

-- Scriptinghost Shell  
 DECLARE @hr int  
 DECLARE @wsShell int  
 -- Erzeugen eines Wscript.Shell Objekts  
 EXEC @hr = master.dbo.sp_OACreate 'WScript.Shell', @wsShell OUTPUT  
 IF @hr = 0  
  PRINT 'Wscript.Shell Objekt erstellt.'  
 ELSE  
  PRINT 'Fehler beim Erzeugen eines WScript.Shell Objekts.'  
   
 -- Objekt wieder freigeben  
 EXEC @hr = master.dbo.sp_OADestroy @wsShell  
 PRINT @hr  
 GO

Erstellen eines DTS.Paket Objekts

-- DTS.Package  
 --  
 DECLARE @hr int  
 DECLARE @paket int  
 -- DTS.Paket Objekt erzeugen:  
 EXEC @hr = master.dbo.sp_OACreate 'DTS.Package', @paket OUTPUT  
 IF @hr = 0  
  PRINT 'DTS.Paket Objekt erzeugt.'  
 ELSE  
  PRINT 'Fehler beim Erzeugen eines DTS.Paket Objekts.'  
   
 -- Objektvariable freigeben  
 EXEC @hr = master.dbo.sp_OADestroy @paket  
 PRINT @hr  
 GO

Erstellen eines VBS RegularExpression Objekts

-- VBScript.RegularExpression  
 --  
 DECLARE @hr     int  
 DECLARE @regExp int  
 -- Erzeugen eines regulären Ausdrucks  
 EXEC @hr = master.dbo.sp_OACreate 'VBScript.RegExp', @regExp OUTPUT  
 IF @hr = 0  
  PRINT 'VBScript Regular Expression erzeugt'  
 ELSE  
  PRINT 'VBScript Regular Expression konnte nicht erzeugt werden.'  
   
 -- Objekt freigeben  
 EXEC @hr = master.dbo.sp_OADestroy @regExp  
 PRINT @hr   
 GO

Valid XHTML 1.0!

Leerraum

Dokument zum Drucken anzeigen
English Pages
Link-Tipp zum Thema "C#.net": www.csharp-corner.com/

Guter Startpunkt für Infos rund um C#