SQL Server - Schwierigkeiten beim Variablen an eine gespeicherte Prozedur
Ich weiß, das ist eine grundlegende Frage, - aber ich kann nicht herausfinden, den richtigen Weg, um dies getan.
Muss ich übergeben Sie eine variable an einen SQL Server 2008 stored procedure und Rückgabe der Abfrage.
Hier ist die gespeicherte Prozedur:
CREATE PROCEDURE pOrders
AS
DECLARE @enteredClientID varchar(20);
DECLARE @Results table (ClientID varchar(20), Num_orders int);
BEGIN
SET NOCOUNT ON;
-- Get all the order from the client
INSERT INTO @Results
SELECT ClientID, sum(Num_orders)
FROM Orders O
WHERE O.ClientID = @enteredClientID
GROUP BY O.ClientID);
-- Insert the orders into the results table --
SELECT *
FROM @Results;
END
GO;
Nun, ich würde die gespeicherte Prozedur ausführen, und das Ergebnis zurück:
exec pOrders
set @enteredClientID = 'ABC123456789'
Bekomme ich diese Fehlermeldung zurück:
Erklären muß, die Skalare variable "@enteredClientID".
Aber, ich bin der Deklaration der Variablen.... was bin ich?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Sie nicht deklarieren Sie einen parameter, eine lokale variable. Es zu erklären, wie Sie das wollten:
Einen zu nennen:
oder einfach
--In stored proc
--Dann einfügen und einstellen Identität
--Bei Aufruf der Prozedur:
-- Variablen DEKLARIEREN, die zum halten der return-Wert
-- Führen Sie die Prozedur, die gibt Wert.
Versuchen EXEC pOrders 'ABC123456789'.
Den Anruf, den Sie zur Verfügung gestellt versuche, um die Prozedur auszuführen (ohne übergebene Parameter), dann wird versucht, eine variable mit dem Namen @enteredClientID. Da Sie nicht erklärt haben @enteredClientID im Rahmen der Ausführung von code, es kann nicht festgelegt werden.
Weitere Informationen zum verwenden von Parametern mit Verfahren, dieser Artikel könnte hilfreich sein:
http://msdn.microsoft.com/en-us/library/ms189915.aspx