我写了一个存储过程,里面有一个字段是流水号,如果第一次增加的时候,定位‘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
以后每次增加,可是在执行的时候出错,但要是数据库中有一条记录就不会出错,请问怎么判断数据库中没有记录?下面是问题代码
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
解决方案 »
- Delphi 软件开发.有需要Delphi 软件开发的请联系!
- 问题在哪里? Twrite treader
- delphi treeview控件 修改节点名的问题
- 将 String 类型存到 TStings.Objects[0] 怎么存与取???
- 请教如果从Widestring类型的字符串中读取、添加数据
- !!!!高分求解!!!delphi连接操作access奇怪问题!!
- 下面这种问题的原因有哪些可能
- 请问paradox 数据库最多能容纳多少条记录或支持到多大的存储空间.
- 关于定义类型的问题
- delphi写activex,怎样改变默认的只能允许一次Advise
- 为什么把窗体封装里DLL后standard Action便失去了做去?如果才能使standard action生效?
- 怎样传递Http命令给相应的网页,并获得返回信息?
begin
set @MAXID = '00001'
end
else
select @MAXID = SELECT @MAXID=MAX(LISTID)
FROM EM_LIST
.....
IF @MAXID=NULL //怎么判断,数据库中没有记录?
改为: if @maxid is null 即可
SELECT @MAXID=MAX(LISTID)
FROM EM_LIST
将上面一句改为 select @MAXID=isnull(MAX(LISTID),0) FROM EM_LIST IF @MAXID=NULL //怎么判断,数据库中没有记录?将上面改为 IF @MAXID=0搞掂~~~