Sql server 2005 在SQLServer2005中使用IF-THEN和GOTO
下面是一个存储过程,其中iam传递DriverID=0、DrivarCode=DD1和DriverName=Ram。 当执行控制将失败时。控制即将结束 如果((@DriverName!=NULL)和(@DriverCode!=NULL)),之后将失败。DriverName和DriverCode包含值。但仍将失败。原因可能是什么Sql server 2005 在SQLServer2005中使用IF-THEN和GOTO,sql-server-2005,Sql Server 2005,下面是一个存储过程,其中iam传递DriverID=0、DrivarCode=DD1和DriverName=Ram。 当执行控制将失败时。控制即将结束 如果((@DriverName!=NULL)和(@DriverCode!=NULL)),之后将失败。DriverName和DriverCode包含值。但仍将失败。原因可能是什么 Create Procedure InsertUpdateM ( @DriverID int, @DriverCode varchar(50),
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 DriverName=@DriverName and DriverCode=@DriverCode
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 DriverName=@DriverName and DriverCode=@DriverCode
IF(@@RowCount>0) GOTO Fails
IF ((@DriverName!=NULL) and ((@DriverCode!=NULL)
BEGIN
UPDATE DriverM SET DriverCode=@DriverCode,DriverName=@DriverName WHERE DriverID=@DriverID
END
END
END
Fails
SET @Msg='Failed'
我甚至不知道这段代码是如何解析的。在存储过程结束后,您有“Fails”,并且它不是以冒号结束的。您想要更像这样的内容:
ELSE
BEGIN -- Begin 1
SELECT DriverName,DriverCode FROM DriverM WHERE DriverName=@DriverName and DriverCode=@DriverCode
IF(@@RowCount>0) GOTO Fails
IF ((@DriverName!=NULL) and ((@DriverCode!=NULL)
BEGIN -- Begin 2
UPDATE DriverM SET DriverCode=@DriverCode,DriverName=@DriverName WHERE DriverID=@DriverID
END -- End of 2
END -- End of 1
GOTO Succeeds
Fails:
SET @Msg='Failed'
Succeeds:
END -- End of SP
我甚至不知道这段代码是如何解析的。在存储过程结束后,您有“Fails”,并且它不是以冒号结束的。您想要更像这样的内容:
ELSE
BEGIN -- Begin 1
SELECT DriverName,DriverCode FROM DriverM WHERE DriverName=@DriverName and DriverCode=@DriverCode
IF(@@RowCount>0) GOTO Fails
IF ((@DriverName!=NULL) and ((@DriverCode!=NULL)
BEGIN -- Begin 2
UPDATE DriverM SET DriverCode=@DriverCode,DriverName=@DriverName WHERE DriverID=@DriverID
END -- End of 2
END -- End of 1
GOTO Succeeds
Fails:
SET @Msg='Failed'
Succeeds:
END -- End of SP
您可以使用以下代码来实现它
Driverid:
IF EXISTS(your query to check)
BEGIN
GOTO Driverid
END
您可以使用以下代码来实现它
Driverid:
IF EXISTS(your query to check)
BEGIN
GOTO Driverid
END