hey tout, J'ai une procédure stockée et je dois l'appeler dans une autre procédure stockée, mais je souhaite que le premier retourne une valeur (valeur de champ).
CREATE PROCEDURE rnd_STR
(
@Length int
)
@alphaVar varchar(10) OUTPUT
AS
SET @alphaVar = 'blah'
#procedure body
END
GO
DECLARE @alphaVar varchar(10)
EXEC rnd_STR @alphaVar output
SELECT @alphaVar
4 Réponses :
Vous dites @alphavar code> est varchar (10) code>. Dans ce cas, vous devez utiliser un paramètre de sortie comme ci-dessous. retour code> ne peut être utilisé que pour les types d'entiers dans les procédures stockées. CREATE PROCEDURE rnd_STR
@Length int,
@alphaVar varchar(10) OUTPUT
AS
BEGIN
SET @alphaVar = 'blah'
/* Rest of procedure body*/
END
GO
DECLARE @alphaVar varchar(10)
EXEC rnd_STR 10, @alphaVar output
SELECT @alphaVar
@alphavar est Varcharchar (10), quel est le paramètre de sortie?
@Martin: Devrais-je mettre le corps de la procédure stockée avant de faire la déclaration?
@Shaza - Oui. Tout ce qui est après le Go code> ne sera pas inclus dans la définition de procédure stockée.
@Martin: Lorsque j'ai ajouté la sortie @alphavar Varchar (10) Sortie en tant que SET @ALPHavar = 'Test', ces erreurs sont apparues: syntaxe incorrecte près de "@alphavar". Doit déclarer la variable scalaire "@alphavar".
@Shaza - Si vous mettez à jour votre question avec le code exact que vous essayez d'exécuter, je vais jeter un oeil.
@Shaza - Le paramètre de sortie doit aller à côté de l'autre paramètre. Voir Modifier.
Désolé mais n'a vu aucun changement, n'a pas eu l'idée.
@Shaza - Si vous ne pouvez pas voir de changement dans ma réponse, il n'y a pas grand chose d'autre que je puisse faire pour vous aider désolé.
Dans votre réponse !! Je pensais dans ma question. Oui sûr, je peux voir les changements. merci beaucoup tout s'est bien passé bien :)
Vous appelez la syntaxe est faux.
DECLARE @newId int EXEC @newId = rnd_STR, @length = 10
Ah, désolé, ça me fera manquer ça. Quelque chose appelé @ID dans ma base de données serait, par convention, être toujours un int !! Les paramètres de sortie de Martin sont définitivement la voie à suivre dans ce cas.
Essayez ceci:
EXEC @alphaVar = rnd_STR 10
Un travail autour de l'obtention de ce code est d'exécuter la procédure stockée dans votre code> Studio de gestion COPE> et copiez le code SQL code> p>
Vous ne pouvez pas utiliser une valeur scalaire dans laquelle une valeur de table est attendue :( (cela signifie qu'utiliser «SELECT» est trop compliqué / causant le problème ici.)