2009-05-13 7 views
0

Voici une procédure stockée dans laquelle iam transmet DriverID = 0 et DrivarCode = DD1 et DriverName = Ram. Alors que l'exécution de contrôle va échouer.Control arrive à IF ((@DriverName! = NULL) et ((@DriverCode! = NULL)), Après que cela va échouer. DriverName et DriverCode contient des valeurs.Mais toujours à peut-être .Quel échoue la raison de cetteUtilisation de IF THEN et GOTO dans SQL Server 2005

Create Procedure InsertUpdateM 
(
    @DriverID int, 
    @DriverCode varchar(50), 
    @DriverName varchar(50), 
    @Msg varchar(50) output 
) 

AS 
BEGIN 
IF @DriverID=0 
    BEGIN 
     SELECT DriverName,DriverCode FROM DriverM WHERE [email protected] and [email protected] 
     IF(@@RowCount>0) GOTO Fails 
      IF ((@DriverName!=NULL) and ((@DriverCode!=NULL)) 
       BEGIN 
        INSERT INTO DriverM(DriverCode,DriverName) values(@DriverCode,@DriverName) 
       END 
    END 
ELSE 
    BEGIN 
     SELECT DriverName,DriverCode FROM DriverM WHERE [email protected] and [email protected] 
     IF(@@RowCount>0) GOTO Fails 
      IF ((@DriverName!=NULL) and ((@DriverCode!=NULL) 
       BEGIN 
        UPDATE DriverM SET [email protected],[email protected] WHERE [email protected] 
       END 
    END 
END 

Fails 
    SET @Msg='Failed' 

Répondre

3

Je ne suis même pas sûr de savoir comment ce code parse. Vous avez « ne réussit pas » après la fin de la procédure stockée, et il ne se termine pas avec deux points. vous voulez quelque chose comme ceci:.

ELSE 
    BEGIN -- Begin 1 
     SELECT DriverName,DriverCode FROM DriverM WHERE [email protected] and [email protected] 
     IF(@@RowCount>0) GOTO Fails 
      IF ((@DriverName!=NULL) and ((@DriverCode!=NULL) 
       BEGIN -- Begin 2 
        UPDATE DriverM SET [email protected],[email protected] WHERE [email protected] 
       END -- End of 2 
    END -- End of 1 

GOTO Succeeds 
Fails: 
    SET @Msg='Failed' 
Succeeds: 
END -- End of SP 
1

vous pouvez utiliser le code suivant pour y parvenir

Driverid: 
    IF EXISTS(your query to check) 
    BEGIN 
     GOTO Driverid 
    END 
Questions connexes