SQL Server - Difficulté à passer une variable à une procédure stockée
Je sais que c'est une question de base - mais je ne peux pas comprendre la façon correcte de le faire.
J'ai besoin de passer une variable à un Serveur SQL server 2008 procédure stockée et le retour de la requête.
Voici la procédure stockée:
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;
Maintenant, je voudrais exécuter la procédure stockée et obtenir le résultat en arrière:
exec pOrders
set @enteredClientID = 'ABC123456789'
J'obtiens ce message d'erreur:
Doit déclarer la variable scalaire "@enteredClientID".
Mais, je suis déclarer la variable.... ce qui me manque?
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas déclarer un paramètre, mais une variable locale. Pour le déclarer comme vous voulais:
Un l'appeler:
ou tout simplement
--Stockées proc
--Puis d'insertion et de définir l'identité
--Lors de l'appel de procédure:
-- DÉCLARER des variables pour stocker la valeur de retour
-- Exécuter la procédure, qui retourne la valeur.
Essayer EXEC pOrders 'ABC123456789'.
L'appel que vous avez fourni tente d'exécuter la procédure (aucun paramètre n'est passé), puis tente de définir une variable nommée @enteredClientID. Puisque vous n'avez pas déclaré @enteredClientID dans le cadre de l'exécution du code, il ne peut pas le définir.
Pour plus d'informations sur comment utiliser les paramètres avec les procédures, cet article peut vous être utile:
http://msdn.microsoft.com/en-us/library/ms189915.aspx