7
votes

Pouvons-nous retourner une null de la procédure stockée

Pouvons-nous retourner la valeur nulle de la procédure stockée. Je ne veux pas utiliser Collasse ou Isnull. Je veux capturer null au frontend. Est-ce possible?

edit:

J'utilise SQL Server 2005

par exemple. où je veux utiliser xxx

erreur La procédure «SponLineTestest_Checklogin» a tenté de renvoyer un statut de NULL, qui n'est pas autorisé. Un statut de 0 sera retourné à la place. Msg 0, niveau 11, état 0, ligne 0 Une erreur grave s'est produite sur la commande actuelle. Les résultats, le cas échéant, doivent être jetés.


3 commentaires

Quelle base de données utilisez-vous? SQL Server, MySQL, etc.?


@Justin: Q est étiqueté T-SQL. C'est SQL Server.


@Mehrdad afshari, Sybase utilise également T-SQL


3 Réponses :


9
votes

Non, le type de retour d'une procédure stockée est int et il ne peut pas être null.


2 commentaires

Les paramètres d'entrée aux procédures stockées peuvent être int et sont toujours attribués NULL, alors pourquoi ne pas renvoyer les paramètres?


@Chris: C'est ainsi que la langue est conçue. Je soupçonne que l'étui d'utilisation prévu comme un statut d'échec / de réussite, ne pas être null a du sens.



7
votes

Utilisez un paramètre de sortie, exemple xxx

puis appelez-le comme suit ceci xxx


0 commentaires

0
votes

Vous pouvez penser à un proc comme suit. Laissez-moi d'abord définir le contexte. Nous pourrions avoir une table TABLE1 (ID INT, NOM VARCHAR (2), VARCHAR (2)) CODE> et souhaitez obtenir l'identifiant et, si non trouvé, il sera null. Nous pourrions donc écrire un proc comme le suivant:

CREATE PROCEDURE GetId
  @Name  VARCHAR(50), @Status int output
AS
 BEGIN TRY
     set @Status = null
     select @Status = id from Table1 where name=@name


0 commentaires