Announcement

Collapse
No announcement yet.

Procedure - Function

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

  • Procedure - Function

    Hallo zusammen,
    worin besteht der Unterschied zwischen einer Procedure und einer benutzerdefinierten Function...?


    Danke

  • #2
    Hallo!

    Funktionen haben immer Rückgabewerte.
    Proceduren nicht (ja man kann mit output Parametern arbeiten)

    BYE BERND

    Comment


    • #3
      Wenn ich z.B.

      Code:
      CREATE Procedure MyTest
      as
      Select * from tblTest
      Go
      bekomme ich doch auch den "Select" als Rückgabe....

      Oder wie habe ich das zu verstehen...?

      Comment


      • #4
        Hallo,

        die vom Microsoft SQL Server 2000 neu eingeführten benutzerdefinierten Funktionen (UDF) sind mit einer gespeicherten Prozedur vergleichbar, da beide Input-Parameter entgegennehmen und ein Ergebnis zurückliefern. Der Unterschied zwischen beiden Ausprägungen besteht jedoch darin, dass eine benutzerdefinierte Funktion in zusätzlichen Situationen verwendet werden kann:

        a) Bei der Definition einer Tabellenstruktur, indem die benutzerdefinierte Funktion zum Beispiel für die Wertzuweisung einer berechneten Spalte genutzt wird.

        b) Als Quelle einer Relation im FROM-Abschnitt einer SELECT-Anweisung.

        c) Als Quelle eines Filterwertes für die WHERE-Einschränkung einer SQL-Anweisung.

        Comment


        • #5
          Hallo Merlin,

          noch ein Unterschied besteht darin, das Du eine Procedure aus z.B. VB direkt aufrufen kannst, jedoch keine Function! Also du kannst als Commandtext z.B. sp_irgendwas ausführen, jedoch nicht fn_irgendwas, da muss es dann z.B. lauten: select dbo.fn_irgendwas(Parameter1) oder Select * from dbo.fn_irgendwas(Parameter1) as Table (hängt vom Typ der Function ab).

          Gruß
          Thomas

          Comment


          • #6
            OK.

            Danke für die Erklärungen....

            Comment


            • #7
              Originally posted by Andreas Kosch View Post

              Der Unterschied zwischen beiden Ausprägungen besteht jedoch darin, dass eine benutzerdefinierte Funktion in zusätzlichen Situationen verwendet werden kann:

              Wie ist es mit dem complieren bzw. ausführungsplan einer Funktion?
              Ist es genau so wie mit Prozeduren oder werden die UDF jedes mal neu compeliert ?

              Comment


              • #8
                Hallo,

                auch der Execution Plan einer User-Defined Function (UDF) wird wie bei einer Stored Procedure generell im Cache zwischengespeichert. Im Detail hängt das Verhalten dann jedoch auch davon ab, ob mehrere Aufrufe mit den gleichen Parametern immer das gleiche Ergebnis zurückliefern (Deterministic Function).

                Comment

                Working...
                X