Du bist hier: Skip Navigation LinksHome > .NET > Artikel

T-SQL Quickies: Arrays an gespeicherte Prozeduren übergeben

Dieses Beispiel zeigt, wie Sie Array-Parameter an gespeicherte Prozeduren übergeben können. Das Beispiel-Script erstellt die Prozedur "GetCustomers", die alle Datensätze aus der Tabelle Customers liefert, deren Primärschlüssel im angegebenen Array enthalten ist.

            CREATE PROCEDURE dbo.GetCustomers
              @idList NVARCHAR(MAX)

            AS
              DECLARE @tmp TABLE (id UNIQUEIDENTIFIER)

              DECLARE @id NVARCHAR(36), @pos INT
              DECLARE @list NVARCHAR(MAX)
              SET @list = @idList

              SET @list = LTRIM(RTRIM(@list))+ ','
              SET @Pos = CHARINDEX(',', @list, 1) 

              IF REPLACE(@list, ',', '') <> ''
              BEGIN
                WHILE (@pos > 0)
                BEGIN
                  SET @id = LTRIM(RTRIM(LEFT(@list, @pos - 1)))
                  IF (@id <> '')
                  BEGIN
                    -- PRINT @id
                    INSERT INTO @tmp (id)
                    VALUES (@id)
                  END
                  SET @list = RIGHT(@list, LEN(@list) - @pos)
                  SET @pos = CHARINDEX(',', @list, 1)
                END
              END

              SELECT c.id
              FROM dbo.Customers c INNER JOIN 
                @tmp t ON c.id = t.id
          

Ich habe diese Prozedur ursprünglich für eine einfache O/R-Mapper-Implementierung geschrieben - die Leistungsfähigkeit der Abfrage war dabei weniger wichtig; unter Gesichtspunkten der Performance ist dies sicher nicht die beste Lösung, aber ich finde Sie dennoch nützlich... Und so kann die Prozedur verwendet werden; das Array wird einach als komma-separierte Liste übergeben.

            EXEC GetCustomers N'F6306321-231A-42cd-B3FD-DAF59607AFB3,B133955F-5F5B-4029-8104-27673D28DC3D'
          

Kick it on dotnet-kicks.de

Kommentar schreiben

Name*:  
Email*:  
Website:
Kommentar: