Sql Server如果条件有select

时间:2012-02-10 16:43:22

标签: sql-server tsql

这有什么问题?

  DECLARE @error int

  If (SELECT ID_Projet FROM tblProjet WHERE No_Projet=@no_Projet)> 0
     SET @error=1
  END IF

2 个答案:

答案 0 :(得分:6)

END IF不正确。

这样做:

 DECLARE @error int

  If (SELECT ID_Projet FROM tblProjet WHERE No_Projet=@no_Projet)> 0
     SET @error=1

或者这个:

 DECLARE @error int

  If (SELECT ID_Projet FROM tblProjet WHERE No_Projet=@no_Projet)> 0
  Begin
     SET @error=1
  End

检查HERE以获取文档。


如果您试图查看具有该限制的行数,您应该这样做:

 DECLARE @error int

  If (SELECT count(ID_Projet) FROM tblProjet WHERE No_Projet=@no_Projet)> 0
  Begin
     SET @error=1
  End

答案 1 :(得分:3)

END IF不是条件语句的T-SQL语法。

DECLARE @error int

IF (SELECT COUNT(ID_Projet) FROM tblProjet WHERE No_Projet=@no_Projet)> 0
  BEGIN
    SET @error=1
  END 

编辑:

由于这只检查至少一行,因此您应该使用EXISTS功能而不是COUNT。这样效率要高得多,如果ID_Project可以为空,则需要在EXISTS查询中添加另一个WHERE子句,以便添加“AND ID_Projet IS NOT NULL”,因为COUNT(NULL)= 0

DECLARE @error int

IF EXISTS(SELECT ID_Projet FROM tblProjet WHERE No_Projet=@no_Projet)
  BEGIN
    SET @error=1
  END