0

J'appelle une procédure stockée avec un paramètre nommé.Procédure stockée avec paramètre nommé et calcul

exec MySP @name = 'binesh', @amount = @amt, @date = @date 

Cela fonctionne bien pour moi.

Mais quand je suis en train

exec MySP2 @name = 'binesh', @amount = [email protected], @date = @date 

ou

exec MySP3 @name = 'binesh', @amount = @amt, @date = convert(varchar(25), @date, 131) 

Je reçois une erreur de syntaxe.

Est-ce obligatoire que j'ai besoin de créer des variables séparées pour chacun (le bon sens dit que ce ne sera pas le cas). Alors, quelle est la syntaxe pour cela?

Merci à tous

Binesh

+0

Quelle est l'erreur de syntaxe que vous obtenez et comment sont les variables déclarées dans chaque sp? – Sam

+0

Si vous obtenez une erreur avec -1000, c'est probablement parce que votre requête ne gère pas les nombres négatifs pour une raison autre que l'entrée. – ZLK

+0

J'appelle dans la fenêtre de requête comme ceci. Ce n'est pas -1000. son - @ amt. Pardon. Mise à jour de la question –

Répondre

2

Je pense que la procédure type que vous ne pouvez pas faire de données. Je suppose que @amount est int et @date varchar (25) dans le paramètre procédure. si @date est varchar vous ne pouvez pas mettre directement @ date = convert (varchar (25), @ date, 131). Utilisez même variable de type à la suggestion convert.My est

declare @amt INT= 100; --some value 
set @amt = @amt * -1; 
declare @date DATE = getdate(); -- some date 
declare @date2 VARCHAR(25); 
set @date2 = convert(varchar(25),@date,131); --convert to varchar 
exec MySP3 @name='binesh', @amount = @amt,@[email protected] 
+0

La date dans le sp est le type de varchar seulement & -amt devrait prendre dans quel cas droit? –

+0

oui, vous pouvez ajuster avec variable locale comme ceci declare @amt INT = 100; définir [@amt] = [@amt] * -1 –

1

Vous ne pouvez pas construire entrée « en ligne » pour les procédures stockées. Vous devez résoudre les entrées avant de les utiliser.

Par exemple, vous devez faire quelque chose comme ça (ainsi que résoudre les autres paramètres) ...

declare 
    @date varchar(25) = convert(varchar(25), @date, 131); 

exec MySP3 @name = 'binesh', @amount = @amt, @date = @date;