itrain-home BASTA! Spring 2012  
home
 Aktuelle Seite:  knowhow sql tsql xp regreadvorwahlen.asp 
 



 

Transact SQL Script: regReadVorwahlen.SQL

questions? mailto:info@itrain.de

Download SQL Script

Dieses Script dient nur Demonstrationszwecken. Verwendung des Scripts erfolgt auf eigene Gefahr.


-- Beispiel für das Arbeiten mit erweiterten gespeicherten Prozeduren  
 -- zum Lesen der Registry  
 -- Fragen? sql@itrain.de  
 --  
 -- Dieses kleine Transact SQL Skript zeigt, wie Werte aus der Registry gelesen werden  
 -- können  
 -- Als Beispiel werden die von TAPI in der Registry abgelegten Vorwahlen ausgelesen  
 -- und in eine Tabelle geschrieben  
 -- ACHTUNG! Dieses Beispiel erstellt in der aktuellen Datenbank eine neue  
 --     Tabelle mit dem Namen [Internationale_Vorwahlen]  
 --          Sollte in der Datenbank bereits eine Tabelle mit diesem Namen vorhanden  
 --          sein so wird diese GELÖSCHT!  
   
 SET NOCOUNT ON  
 DECLARE @startSchluessel varchar(128)  
 DECLARE @aktSchluessel varchar(128)  
 DECLARE @retCode int  
 DECLARE @land varchar(128)  
 DECLARE @vorwahl int  
   
 SET @startSchluessel = 'Software\Microsoft\Windows\CurrentVersion\Telephony\Country List'  
   
 -- Erstellen der Zieltabelle Internationale_Vorwahlen mit den Spalten  
 -- id, Vorwahl und Land  
 IF OBJECT_ID('Internationale_Vorwahlen', 'U') IS NOT NULL  
  DROP TABLE [Internationale_Vorwahlen]  
 CREATE TABLE [Internationale_Vorwahlen]  
   (id int PRIMARY KEY, Vorwahl int, Land varchar(80))  
   
 -- Erstellen zweier temporärer Tabellen  
 -- #landids für die Liste aller Landids in der Registry  
 CREATE TABLE #landids(id int)  
   
   
 -- Ermitteln aller Land-Ids mit Hilfe von xp_regEnumKeys  
 INSERT INTO #landids  
  EXEC @retcode = master.dbo.xp_regenumkeys  
   'HKEY_LOCAL_MACHINE',   
   @startSchluessel  
  IF @retcode <> 0 OR @@ERROR <> 0  
  BEGIN  
   PRINT 'Fehler beim Lesen der Registry'  
   RETURN  
  END  
   
 DECLARE @curID int  
 -- Deklaration eines Cursors zum Durchlaufen aller gefundenen Schluessel  
 DECLARE laenderCursor CURSOR FAST_FORWARD FOR SELECT id FROM #landids  
 OPEN laenderCursor  
 FETCH NEXT FROM laenderCursor INTO @curID  
 WHILE @@FETCH_STATUS = 0  
 BEGIN  
  SET @aktSchluessel = @startSchluessel + '\' + CAST(@curid as varchar(8))  
  -- Lesen des Wertes Name  
  EXEC @retCode = master.dbo.xp_RegRead 'HKEY_LOCAL_MACHINE',   
   @aktSchluessel, 'Name', @land OUTPUT  
  EXEC @retCode = master.dbo.xp_RegRead 'HKEY_LOCAL_MACHINE',   
   @aktSchluessel, 'CountryCode', @vorwahl OUTPUT  
  INSERT INTO [Internationale_Vorwahlen]   
   (id, Vorwahl, Land)   
   VALUES (@curid, @vorwahl, @land)  
  FETCH NEXT FROM laenderCursor INTO @curID  
 END  
 CLOSE laenderCursor  
 DEALLOCATE laenderCursor  
 DROP TABLE #landids  
 SELECT * FROM [Internationale_Vorwahlen] ORDER BY Land
Leerraum

Dokument zum Drucken anzeigen
English Pages
Link-Tipp zum Thema "VB.net": www.vbxtras.com/

VBExtras