Inkompatibler Objekttyp beim Erstellen und Ändern einer Tabellenwertfunktion in SQL

7

Ich erhalte den unteren Fehler für die angegebene Funktion.

Nachricht 2010, Ebene 16, Status 1, Prozedur GetTableFromDelimitedValues, Zeile 2 Änderung von 'dbo.GetTableFromDelimitedValues' kann nicht ausgeführt werden, da es sich um einen inkompatiblen Objekttyp handelt.

%Vor%

Kann jemand bitte mir helfen, den kompatiblen Typ zu erhalten, indem ich die Funktion repariere?

    
ary 28.01.2014, 22:55
quelle

4 Antworten

18

Sie müssen DROP und CREATE die Funktion in diesem bestimmten Kontext

erstellen

Da der Funktionsrückgabetyp geändert wurde, müssen wir ihn löschen und dann die Funktion neu erstellen.

Es gibt drei Arten von Funktionen,

  • Skalar
  • Inline-Tabelle bewertet und
  • Mehrfachaussage

ALTER kann nicht zum Ändern des Funktionstyps verwendet werden.

    
Lucky 08.07.2014 08:36
quelle
2
%Vor%

in OBJECT_ID Funktion müssen Sie nur den Funktionsnamen und nicht das Schema übergeben. und warum würde es zuerst erstellen und dann Alter es. Überprüfen Sie einfach die Existenz 1. Wenn es existiert, dann fallen lassen Funktion und erstellen Sie Ihre Funktion, wie ich oben gezeigt habe.

Fügen Sie auch Type in der where-Klausel nicht hinzu, wenn es nach Existenz sucht. Wenn es ein anderes Objekt gibt, das keine Funktion ist, aber kein anderes Objekt mit demselben Namen, wird es nicht in Ihrer select-Anweisung aufgenommen Erstellen einer Funktion mit einem Namen ein Objekt existiert bereits (dies wird einen Fehler auslösen).

WENN du es auf deine Art machen willst, so würdest du darüber gehen

%Vor%     
M.Ali 28.01.2014 23:18
quelle
0

Ich habe etwas, das Sie über Ihren Fehler im Zusammenhang mit Ihrem Code informieren müssen:
Der Fehler sagt Cannot perform alter on 'dbo.GetTableFromDelimitedValues' because it is an incompatible object type
Das bedeutet, dass Sie nach dem ALTER....
auf Ihre Zeilen schauen müssen Und ja, t ist das:
@input varchar(max)
Der SQL Server 2008 r2 akzeptiert keine Objekte varchar(MAX) , aber das ist nur dann der Fall, wenn Sie eine gespeicherte Prozedur ausführen Denn wenn Sie eine Tabelle von Hand erstellen, akzeptieren Sie sie vollständig.
Wenn Sie eine große Zelle möchten, dann geben Sie varchar(1024) oder varchar(2048) ein, die beide akzeptiert werden. Ich habe dieses Problem vor ein paar Tagen ... Das ist meine bescheidene Meinung

ZUSÄTZLICHE ÄNDERUNGEN
Benutze dieses

%Vor%


.... Achten Sie auf den Wechsel von "zu"

** ZUSÄTZLICHE ÄNDERUNGEN **

Ich benutze das Folgende, was auch gut funktioniert ... ohne irgendein Problem ...

%Vor%     
Lefteris Gkinis 29.01.2014 00:05
quelle
0

Ich bestätige, dass der folgende Code funktioniert. Scheint, dass das Problem irgendwie eine Skalarwertfunktion war, die während meiner Entwicklung mit dem gleichen Namen erstellt wurde, und bekam einen Fehler, da die mehrteilige Tabellenwert-Alter-Anweisungsfunktion des Skripts damit kompatibel ist.

%Vor%     
ary 29.01.2014 19:28
quelle