SQL-Prozedur hat keine Parameter und Argumente geliefert wurden
So, hier ist der code für die gespeicherte Prozedur, und meine Ausführung. Ich bekomme immer diese Meldung wenn ich versuche auf meinen Befehl ausführen:
Msg 8146, Ebene 16, Status 2, Prozedur sp_LabelFilm, Line 0
Verfahren sp_LabelFilm hat keine Parameter und Argumente geliefert wurden.
Irgendeine Idee warum? Ich bin versucht, zu aktualisieren eine Spalte in der Tabelle tblfilm zu sagen, wenn ein Film kurz -, Mittel-oder langfristig, basierend auf dessen Laufzeit.
ALTER PROCEDURE [dbo].[sp_LabelFilm]
AS
BEGIN
DECLARE @Minutes INT, @duration char(10)
DECLARE Filmcursor CURSOR FOR
(SELECT filmruntimeminutes, Duration FROM tblFilm)
OPEN filmcursor
FETCH NEXT FROM filmcursor INTO @duration
WHILE (@@FETCH_STATUS = 0)
BEGIN
SELECT @Minutes = FilmRunTimeMinutes FROM tblFilm
IF @Minutes < 120
SET @duration = 'short'
ELSE IF @Minutes < 150
SET @duration = 'medium'
ELSE
SET @duration = 'long'
FETCH NEXT FROM filmcursor INTO @duration
UPDATE tblFilm
SET Duration = @duration
END
CLOSE filmcursor
DEALLOCATE filmcursor
END
DECLARE @Minutes INT, @duration CHAR(10)
EXECUTE [dbo].[sp_LabelFilm] @minutes, @duration
Side note: Sie sollten nicht verwenden Sie die
sp_
Präfix für Ihre gespeicherten Prozeduren. Microsoft hat vorbehalten, die mit einem Präfix für den eigenen Gebrauch (siehe Benennen von Gespeicherten Prozeduren), und Sie laufen Gefahr, einen name-clash-irgendwann in der Zukunft. Es ist auch schlecht für die gespeicherte Prozedur performance. Es ist am besten, einfach zu vermeiden sp_
und verwenden Sie etwas anderes als ein Präfix - oder kein Präfix!
InformationsquelleAutor Jon Doe | 2016-12-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
die Fehlermeldung bedeutet genau das, was es sagt. Dass Sie die Weitergabe von Argumenten (Variablen
@minutes
und@duration
), aber es gibt keine definierten Parameter an die gespeicherte Prozedur.Parameter zu deklarieren (input-Variablen), die Sie eigentlich erklären Sie vor der
AS
etwa so:Bemerken Sie nicht brauchen, um verwenden Sie das key-word
DECLARE
und sobald Sie einen als Parameter deklariert, die Sie nicht wirklich benötigen, deklarieren Sie Sie wieder ein.Weiter, ich bin nicht ganz sicher, was Sie versuchen zu erreichen, mit dem die Parameter in der gespeicherten Prozedur, aber es sieht tatsächlich aus wie Sie nicht wollen, Sie zu übergeben, sondern Sie wollen Sie als " out " setzen würde wie folgt Aussehen:
- Und Ihre Ausführung-Anweisung würde wie folgt Aussehen:
InformationsquelleAutor Matt
Hatte ich definiert die Parameter für die gespeicherte Prozedur, vor dem WIE, aber ich war vor dem gleichen problem, bis ich gemerkt habe, dass die Prozedur hatte, 'erstellen', anstatt 'ändern'. Ändern Sie es zu ändern, Verfahren für mich gearbeitet.(Stand dieser Ausgabe, während ich versuchte, mich zu Debuggen).
InformationsquelleAutor Meghan Kothari
Abgesehen von der ersten Antwort, die apt - In meinem Fall hatte ich keine Parameter und beim EXEC wurde immer eine ähnliche Fehlermeldung.
Jedoch mit dem Unterschied - ich war putting ein "go" unter der EXEC-Anweisung.
Nach dem entfernen der gehen es wurde ordnungsgemäß ausgeführt.
InformationsquelleAutor Amjad