Announcement

Collapse
No announcement yet.

UDF mit MSDE2000 oder MSDE 1.0 ist das möglich?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • UDF mit MSDE2000 oder MSDE 1.0 ist das möglich?

    Hallo

    Kann man mit der MSDE2000 oder MSDE 1.0 User defined functions erstellen und wenn wie funktioniert das?

    Vielen Dank im voraus

  • #2
    Hallo,

    der MS SQL Server 2000 (und somit auch die MSDE 2) stellt verschiedene Wege zur Verfügung, um eigene Funktionserweiterungen unterzubringen: <br>
    a) UDF (User-defined Funktions) als T-SQL-Funktionen <br>
    b) Funktion als DLL<br>
    c) Aufruf eigener COM-Objekte aus T-SQL heraus.

    Das folgende Beispiel demonstriert den Fall a)
    <pre>
    CREATE FUNCTION DayOnly(@Date datetime) RETURNS varchar(12)
    AS
    BEGIN
    RETURN CONVERT(varchar(12), @Date, 101)
    END
    </pre>
    Aufrufbeispiel:
    <pre>
    SELECT * FROM TestTable
    WHERE dbo.DayOnly(TestDate) = dbo.DayOnly(GETDATE())
    </pre&gt

    Comment


    • #3
      Hallo Herr Kosch,

      gibt´s UDF's auch schon mssal 7.0?
      oder gibt's ad nur den Weg über Dll's?

      gru&#223

      Comment


      • #4
        Hallo Herr Kosch,
        <br>
        <br>können Sie ggf. in Ihrem neuen ADO Buch auf dieses Thema mal eingehen. Kleines Beispiel wie man in Delpi eine DLL schreibt aus der eine Funktion im MSSQL Server aufgerufen werden kann.
        <br>
        <br>Danke!
        <br>
        <br>mfg
        <br>P

        Comment


        • #5
          Hallo Patrick,

          die DLL-Funktion geht auch mit dem MS SQL Server 7, aber sogar Microsoft warnt davor, so etwas in Angriff zu nehmen :-)<br>
          (der Aufwand ist erheblich)

          Besser, einfacher und zukunftsträchtiger ist dann die Version c), die ebenfalls mit der 7er-Version zur Verfügung steht. Microsoft hat angekündigt, dass die nächste Version vom MS SQL Server .NET voll unterstützt, d.h. innerhalb einer Stored Procedure darf man auf <b>alle</b> Funktionen von .NET unabhängig von der Sprache zugreifen. Somit ist das Schreiben einer Stored Procedure mit dem Schreiben einer eigenen DLL identisch - es gibt keinen Unterschied mehr (da auch die Stored Procedure auf Wunsch in C# oder VB.NET geschrieben werden darf).

          Bevor .NET kommt, würde ich aus einer Stored Procedure heraus ein eigenes mit Delphi geschriebenes COM+ Objekt aufrufen. Das könnte zum Beispiel so aussehen:
          <pre>
          CREATE PROCEDURE spCallCOMplusObj
          @sTXT VARCHAR(50) OUTPUT
          AS
          Declare @Object int, @hr int, @RetVal int, @iStatus int
          SET @iStatus = 1
          -- Objektinstanz erzeugen
          Exec @hr = sp_OACreate '{0E9447C4-EF22-4570-B202-45D50D3B5EFB}', @Object OUTPUT
          IF @hr = 0
          BEGIN
          SET @iStatus = 2
          END
          -- Interface-Methode (Property) abfragen
          Exec @hr = sp_OAGetProperty @Object, 'Daten', @sTXT OUTPUT
          IF @hr=0
          BEGIN
          SET @iStatus = 3
          END
          Exec @hr = sp_OAMethod @Object, 'DoWork'
          IF @hr=0
          BEGIN
          SET @iStatus = 4
          END
          Exec @hr = sp_OADestroy @Object
          Return @iStatus
          </pre&gt

          Comment


          • #6
            Danke!
            <br>
            <br>mfg
            <br>P

            Comment

            Working...
            X