2009-05-13 8 views
0

以下は、iamがDriverID = 0とDrivarCode = DD1とDriverName = Ramを渡すストアドプロシージャです。 コントロールが実行されている間にfails.Controlが IF((@DriverName!= NULL))および((@DriverCode!= NULL))になり、その後は失敗します。 .Whatが、私はこのコードを解析する方法にもわからないんだけど、このSQL Server 2005でIF THENとGOTOを使用する

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' 

答えて

3

の原因になるかもしれない障害が発生した。あなたは、ストアドプロシージャの終了後に「失敗」している、それはコロンで終わっていません。あなたはより多くのこのような何かしたい:。

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

あなたはそれを達成するために、次のコードを使用することができますが

Driverid: 
    IF EXISTS(your query to check) 
    BEGIN 
     GOTO Driverid 
    END 
関連する問題