none
UDF wird nicht erkannt RRS feed

  • Frage

  • Hallo zusammen!

    Folgendes Problem: Ich erhielt den Auftrag eine View zu erstellen die Namen und Telefonnummern aus einer Tabelle ausliest, was jetzt nicht die schwierigkeit war, jedoch soll ich ebenfalls diverse Sonderzeichen aus den Telefonnummern auslesen (sprich: ' ', '-', '/').

    Mit verschachtelten REPLACE's wird das ganze schnell unübersichtlich, also hab ich mich für eine UDF entschieden. Gesagt, getan.

    Jetzt sagt er mir nachdem ich dieses UDF erstellt und ausgeführt habe das die Funktion nicht kennt.

    Nachdem ich in Google nichts fand wende ich mich nun direkt an euch mit meinem Problem.

    Hier der Code für die Abfrage:

    SELECT Nummer,
                 Name,
                 Vorwahl + replaceInTel(Telefon) Telefon,
    FROM    Kunde

    Und die UDF:

    CREATE FUNCTION replaceInTel (@str VARCHAR(50))
      RETURNS VARCHAR(50) AS
        BEGIN
          SET @str = REPLACE (@str,'-','')
          SET @str = REPLACE (@str,'/','')
          SET @str = REPLACE (@str,' ','')
          RETURN @str
        END

    Das ganze mach ich dann noch mit SQL EXPRESS 2012.

    Hoffe es weiß jemand eine Antwort darauf ;)

    Danke schonmal im vorraus!

    Edit: Hier noch der Fehlercode!

    Meldung 195, Ebene 15, Status 10, Zeile 3
    'replaceInTel' wird nicht als Name einer integrierten Funktion erkannt.

    • Bearbeitet kaela Donnerstag, 25. Juni 2015 08:02
    Donnerstag, 25. Juni 2015 07:46

Antworten

  • SELECT Nummer,
                 Name,
                 Vorwahl + replaceInTel(Telefon) Telefon,
    FROM    Kunde

    Hallo,

    wenn Du eine UDF im SELECT Statement verwenden willst, musst Du zwingend das Schema mit angeben, selbst wenn es das Default Schema Deines Users ist. Bei Create hattest Du kein explizites Schema angegeben, ich vermute mal, es ist "dbo", dann muss Dein Select so aussehen:

    SELECT Nummer,
                  Name,
                  Vorwahl + dbo.replaceInTel(Telefon) Telefon,
     FROM    Kunde


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Donnerstag, 25. Juni 2015 08:01

Alle Antworten

  • SELECT Nummer,
                 Name,
                 Vorwahl + replaceInTel(Telefon) Telefon,
    FROM    Kunde

    Hallo,

    wenn Du eine UDF im SELECT Statement verwenden willst, musst Du zwingend das Schema mit angeben, selbst wenn es das Default Schema Deines Users ist. Bei Create hattest Du kein explizites Schema angegeben, ich vermute mal, es ist "dbo", dann muss Dein Select so aussehen:

    SELECT Nummer,
                  Name,
                  Vorwahl + dbo.replaceInTel(Telefon) Telefon,
     FROM    Kunde


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Donnerstag, 25. Juni 2015 08:01
  • Danke!

    ABER:

    Wenn ich in dem seleben Script das Schema angebe geht es, aber in einem anderen Script nicht. Sollte es nicht in jedem Script gehen?

    Donnerstag, 25. Juni 2015 08:05
  • Okay nein es geht, es unterstreicht mir nur den Code ^^

    Nochmal danke für die Antwort!

    Donnerstag, 25. Juni 2015 08:07
  • Hallo kaela,

    Vielen Dank für Deine Frage und Deinen Beitrag in den Foren. Ich möchte Dich noch auf das Markieren als Antwort aufmerksam machen:

    ·          Forenbeiträge bewertenàNutze die Bewertungsfunktionen ("Als Antwort markieren" und "Als hilfreich bewerten") in den MSDN Foren! Unter anderem können andere später eine Lösung schneller finden. Es ist also wünschenswert, dass die fragenden (Benutzer) die Beiträge anderer Beantworter bewerten.

    Hier dazu die wichtigsten Anhaltspunkte aus den Forenregeln und FAQs.

    Lösungsbeiträge als “Die Antwort“ markieren
    Bitte markieren Sie den Beitrag, der zur Lösung geführt hat, als "Die Antwort". Durch Bewerten eines Beitrags als "Die Antwort" können andere Teilnehmer die Lösung schneller finden. Außerdem können Sie dem Benutzer, der die Antwort eingereicht hat, für seinen Beitrag danken und zur Steigerung der Antwortqualität in der Diskussionsgruppe beitragen.
    [Quelle: Forenregeln]

    Gruß,
    Dimiar


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Freitag, 26. Juni 2015 07:36
    Administrator
  • Hallo Kaela,

    Um Das Problem in Zukunft zu umgehen solltest du darüber nachdenken die Ursprungsdaten zu korrigieren (Stichwort: Datenqualtität).

    Somit kannst du auf die Prüfung der Daten beim auslesen verzichten. Um das Hinzufügen von ungültigen Werten zu verhindern kannst du beispielsweise Insert und Update Trigger einsetzten und die Daten vorher prüfen lassen.

    Gruß Benjamin


    Benjamin Hoch
    MCSA: Microsoft Certified Solutions Associate - SQL Server 2012,
    MCSA: Microsoft Certified Solutions Associate - Windows Server 2012,

    Samstag, 27. Juni 2015 12:32