Ich verwende SQL Server 2012.Warum erhalte ich Fehler beim Versuch, gespeicherte Prozeduren zu starten?
Ich muss ein Array von ganzen Zahlen an meine gespeicherte Prozedur von Visual Studio übergeben. Ich muss übergebene Array in where
Klausel verwenden.
Zu diesem Zweck ich table valued parameter
erstellt:
CREATE TYPE IdArray AS TABLE
(
Id int
);
Und hier meine gespeicherten Prozedur:
ALTER PROCEDURE [dbo].[SP_TEST_TLP]
@List dbo.IdArray READONLY
AS
BEGIN
SET NOCOUNT ON;
SELECT *
FROM Clients
WHERE Clients.Id IN ('@List')
END
Aber ich versuche, die gespeicherte Prozedur und Übergabe von Werten zu feuern (einige ganzen Zahlen) in Prozedur Fenster ausführen , Bekomme ich diesen Fehler:
Must pass parameter number 2 and subsequent parameters as '@name = value'. After the form '@name = value' has been used, all subsequent parameters must be passed in the form '@name = value'.
UPDATE:
Hier, wie ich die gespeicherte Prozedur aufrufen:
DECLARE @return_value int
EXEC @return_value = [dbo].[SP_TEST_TLP]
@List = 1,6
SELECT 'Return Value' = @return_value
Jede Idee, warum ich diesen Fehler? Was mache ich falsch?
Wenn Sie möchten, dass wir Ihnen zeigen, was Sie falsch machen, geben Sie den Code ein, mit dem Sie den Prozess ausführen. Verwenden Sie auch nicht 'sp_' als Namenspräfix für gespeicherte Prozeduren. Dies bezeichnet eine gespeicherte SQL Server-Systemprozedur. Umhüllen Sie den TVP nicht in Anführungszeichen. Geben Sie stattdessen eine Unterabfrage wie "SELECT ID FROM @ List" an. –
'Wo Clients.Id IN ('@List')' wird auch nicht tun, was Sie wollen. Sie haben bereits die richtige Syntax hier gegeben http://stackoverflow.com/questions/40206849/why-i-get-error-when-i-try-to-create-stored-procedure –
Können Sie den Code, der die Prozedur ausführen Fenster produziert? Ausführen von Prozedurfenstern verwendet die Syntax @name = value zum Aufrufen von SPs. Wenn Sie die Zahlen nur komma-getrennt (1, 2, 3) schreiben, wird es höchstwahrscheinlich als @List = 1, 2, 3 interpretiert. Das ist nicht das, was Sie wollen. – infiniteRefactor