我写了一个存储过程,里面有一个字段是流水号,如果第一次增加的时候,定位‘00001’
以后每次增加,可是在执行的时候出错,但要是数据库中有一条记录就不会出错,请问怎么判断数据库中没有记录?下面是问题代码
CREATE PROCEDURE ADD_LIST
  AS 
  DECLARE
  @MAXID           VARCHAR(10),
  @ELID          VARCHAR(40)BEGIN  BEGIN TRANSACTION  --计算流水号
  SELECT @MAXID=MAX(LISTID)  
  FROM EM_LIST
 
  IF @MAXID=NULL      //怎么判断,数据库中没有记录?
    BEGIN 
      SET @MAXID='00001'
    END
    ELSE
    BEGIN
      SET @MAXID=CAST((CAST(@MAXID AS INT)+1) AS VARCHAR(10))
      WHILE (LEN(@MAXID)<5) 
        SET @MAXID='0'+@MAXID
    END
  

解决方案 »

  1.   

    if not exists (select 1 from EM_LIST) 
    begin
      set @MAXID = '00001'
    end
    else 
      select @MAXID = SELECT @MAXID=MAX(LISTID)  
      FROM EM_LIST
    .....
      

  2.   

    1:楼上方法可以2:
    IF @MAXID=NULL      //怎么判断,数据库中没有记录?
    改为:  if @maxid is null 即可
      

  3.   

    --计算流水号
      SELECT @MAXID=MAX(LISTID)  
      FROM EM_LIST
     
    将上面一句改为 select @MAXID=isnull(MAX(LISTID),0) FROM EM_LIST  IF @MAXID=NULL      //怎么判断,数据库中没有记录?将上面改为 IF @MAXID=0搞掂~~~