none
Array als outputparameter einer Function, bzw. mehrere Outputparameter RRS feed

  • Frage

  • Hallo liebe Forummitglieder,

    meine momentane Aufgabe besteht darin, unterschidlich lange Zeichenketten einer Spalte in mehrere Spalten aufzusplittern.

    Die einzelne Fragmente sind durch "/" voneinander getrennt (das ist schonmal gut :)). Ich habe ungefehr an so etwas gedacht:

    USE [DB]
    GO
    /****** Object:  UserDefinedFunction [dbo].[unconcatinate]    Script Date: 20.03.2014 15:08:39 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    alter function [dbo].[unconcatinate_1] (@geschäftsfälle varchar(255))
    returns @temptable table
    (
      Geschäftsfälle varchar(255)
    )
    as

    begin
    --Declare @geschäftsfälle varchar(255) = rtrim('Geschäftsfall1/
    --G esch(ä) fts fall2/
    --Gesch äftsfall3/
    --Geschäftsfall4 /')


    Declare @substr varchar(255)

    WHILE LEN(@geschäftsfälle) > 0
    BEGIN
        IF PATINDEX('%/%',@geschäftsfälle) > 0
         BEGIN
            SET @substr = SUBSTRING(RTRIM(@geschäftsfälle), 0, PATINDEX('%/%',RTRIM(@geschäftsfälle)))
            insert into @temptable values (@substr)


            SET @geschäftsfälle = SUBSTRING(RTRIM(@geschäftsfälle), LEN(@substr + '/') + 1,LEN(RTRIM(@geschäftsfälle)))
         END
        --BEGIN
        --    SET @substr = @geschäftsfälle
        --    SET @substr = NULL
        --    --SELECT @substr
        --END
    END

    RETURN

    END

    Fehlermeldung:

    Meldung 2010, Ebene 16, Status 1, Prozedur unconcatinate_1, Zeile 34
    ALTER kann nicht für 'dbo.unconcatinate_1' ausgeführt werden, da es sich um einen nicht kompatiblen Objekttyp handelt.

    und wenn ich z.B. mein Attay so definiere:

    returns @temptable table
    (
      Geschäftsfall varchar(255)
      ,Geschäftsfall1 varchar(255)
      ,Geschäftsfall2 varchar(255)
      ,Geschäftsfall3 varchar(255)
      --,Geschäftsfall4 varchar(255)
      --,Geschäftsfall5 varchar(255)
    )

    dann kriege ich folgende Meldung:

    Meldung 213, Ebene 16, Status 1, Prozedur unconcatinate_1, Zeile 27
    Der Spaltenname oder die Anzahl der bereitgestellten Werte entspricht nicht der Tabellendefinition.

    Ich bin relativ neue im SQL Server, weiß aber Arrays zu schätzen!

    Kann mir jemand helfen?

    Danke und beste Grüße

    Irina

    Freitag, 21. März 2014 08:55

Antworten

Alle Antworten