none
Rückgabe eines Arrays oder einer Liste aus C#-Assembly an T-SQL-Prozedur? RRS feed

  • Frage

  • Hi,

    habe folgendes Problem: Müsste eine Liste oder ein Array aus einer C-Assembly an eine SP zurückgeben. Den Datentyp SQLString[] kann ich zwar als Rückgabe definieren, doch bekomme ich den Typ String[] nich dahinigehend umgewandelt.

    public class Function
    {
        [Microsoft.SqlServer.Server.SqlFunction]
        public static SqlString GetListOfItems()
        {
        string[] myList = {};
        ...
        return (?)myList;
        }
    }

    Habe schon das Internet durchgraben. Entweder ist es nicht so einfach, oder ich war blind. Hat jemand einen Vorschlag?

    Gruß Hipp



    • Bearbeitet Hipp1010 Mittwoch, 11. Dezember 2013 06:53
    Mittwoch, 11. Dezember 2013 06:51

Antworten

Alle Antworten

  • Hallo,

    schau mal ob Dir das hier hilft.
    http://blogs.msdn.com/b/stuartpa/archive/2005/07/21/441468.aspx

    Es sollte aus meiner Sicht schon eine Tabelle sein, die zurückgegeben wird. Den Typen Array soll es im SQL Server nicht geben

    Grüße Alexander

    • Als Antwort markiert Hipp1010 Mittwoch, 11. Dezember 2013 08:09
    • Tag als Antwort aufgehoben Hipp1010 Mittwoch, 11. Dezember 2013 09:00
    • Als Antwort markiert Hipp1010 Mittwoch, 11. Dezember 2013 09:17
    Mittwoch, 11. Dezember 2013 07:38
  • Hallo Alexander,

    super. Genau was ich brauche. Und auch noch mit Dateien aus einem Verzeichnis. Perfekt. Vielen Dank.

    Grüße Hipp

    • Als Antwort markiert Hipp1010 Mittwoch, 11. Dezember 2013 09:17
    • Tag als Antwort aufgehoben Hipp1010 Mittwoch, 11. Dezember 2013 09:17
    Mittwoch, 11. Dezember 2013 08:09
  • Hi,

    leider etwas zu früh gefreut. Mit den beiden Parametrn des Dateinamens (string) und des Datum (DateTime) ist soweit alles ok. Doch habe ich schon sämtlich Variationen mit der Dateigröße versucht.

    Bekomme folgende Fehlermeldung:

    Msg 6260, Level 16, State 1, Line 1
    An error occurred while getting new row from user defined Table Valued Function : 
    System.InvalidCastException: Specified cast is not valid.
    System.InvalidCastException: 
       at Function.FillRow(Object obj, String& fileName, DateTime& fileDate, Int32& fileSize)
    .

    Mittwoch, 11. Dezember 2013 08:58
  • Hi,

    habs gelöst: In der Assembly habe ichals Rückgabwert "Int64", in der SQL-Function den Wert als BigInt definiert. Alles Bestens.

    Gruß Hipp

    Mittwoch, 11. Dezember 2013 09:17