SQL Server 2008 Procédure Stockée avec plusieurs paramètres de sortie
J'ai une procédure stockée comme suit:
ALTER PROCEDURE [dbo].[sp_web_orders_insert]
(
@userId int = default,
@custId int = default,
@orderDate datetime = default,
@orderTotal money = default,
@statusId int = default,
@orderReference varchar(50) = default,
@custReference varchar(50) = default,
@order_ID INT output,
@orderReferenceOutput varchar(50) output
)
AS
SET NOCOUNT OFF;
INSERT INTO [web_orders] ([user_ID], [cust_ID], [orderDate], [orderTotal], [statusId], [orderReference], [custReference]) VALUES (@userId, @custId, @orderDate, @orderTotal, @statusId , 'PLC' + REPLICATE('0', (7 - LEN((select MAX(order_ID) from web_orders)))) + CAST((select(max(order_ID)+1) from web_orders) AS VARCHAR(5)), @custReference);
SELECT @order_ID = @@IDENTITY
RETURN @order_ID
SELECT @orderReferenceOutput = 'PLC' + REPLICATE('0', (7 - LEN((select MAX(order_ID) from web_orders)))) + CAST((select(max(order_ID)+1) from web_orders) AS VARCHAR(5))
RETURN @orderReferenceOutput
Pour une raison quelconque, le deuxième paramètre de sortie @orderReferenceOutput
ne retourne rien. Le but de cette deuxième paramètre de sortie est de récupérer une colonne j'ai juste inséré dans la base de données.
- La méthode la plus simple correctif: juste un commentaire votre RETOUR des commandes. Ce n'est pas ce qu'ils sont pour.
Vous devez vous connecter pour publier un commentaire.
L'exécution de la procédure se termine après votre première De RETOUR qui "Quitte sans condition à partir d'une requête ou une procédure."
Au lieu de cela, envisager de revenir à la fois des valeurs comme un jeu d'enregistrements avec
à la fin de la procédure.
Vous avez plusieurs paramètres de sortie, vous devriez être en utilisant. Les valeurs de RETOUR sont à l'erreur/codes de statut, pas de données.
Supprimer votre
RETURN
à partir de l'original de votre procédure stockée.Ajuster votre appel d'instruction pour ressembler à
@Id et @de Référence sont disponibles dans votre processus appelant.
Vous ne pouvez avoir qu'un seul retour dans une procédure stockée. Comme soo nas, il frappe la première retourner à la sortie de la proc.
Utiliser l'ENSEMBLE des opérations d'assigner des valeurs aux variables avant de délivrer un RETOUR.
Microsoft l'Article sur le Retour
Il est possible de retourner plus d'un paramètre de sortie, mais pour autant que je sais qu'avec le Microsoft SQL Server, un Pilote JDBC.
À l'aide d'une Procédure Stockée avec des Paramètres de Sortie
Vous devez mettre de la sortie à la fin de chaque sortie dans le
exec
instruction contraire de tout ce que vous obtenez est la valeur null. Vous pouvez faire un test simple pour vérifier cela: