-
判断参数时候有返回值:
1.if exitsts(参数):缺点 在里面不能直接使用begin end;
2.if(参数 is null):直接判断是否为空;
下面这种方法不能判断出空值
DECLARE @参数 int =0
if(@参数=0); -
有返回值的存储过程:
ALTER PROCEDURE [dbo].[InsertOneUser]
@OName varchar(50) =NOTnull,
@Prefecture varchar(20)= NOTnull,
@Username varchar(20) =NOTnull,
@Password varchar(20) =NOTnull
/*@returnMessage varchar(200) output */
AS
BEGIN
Declare @sameOId int,
@Samename nvarchar(50)=N''
set @sameOId=(select Id from t_Orgnization where Name= @OName)
if(@sameOId IS null)
begin
exec InsertOneOrg @OName ,@Prefecture,0
/* 插入组织后重新查询组织id*/
set @sameOId=(select Id from t_Orgnization where Name= @OName)
if(@sameOId IS null)
begin
return -1
/*
set @returnMessage ='组织列表无此组织,插入新组织失败,插入用户失败'
print('插入组织失败')*/
end
else
begin
begin
insert into t_Users (OId,OName,Name,Password,Permission) values (@sameOId,@OName,@Username,@Password,'admin')
/* set @returnMessage ='组织列表无此组织,插入新组织成功,插入用户成功'*/
return 2
end
end
end
else /*组织中有重复的*/
begin
/*查询用户是否有重名*/
set @Samename=(select Name from t_Users where Name=@Username)
if(@Samename IS NULL)
begin
insert into t_Users (OId,OName,Name,Password,Permission) values (@sameOId,@OName,@Username,@Password,'admin')
/*set @returnMessage ='组织列表包含此组织,插入用户成功'*/
return 1
end
else
begin
/*set @returnMessage ='组织列表包含此组织,用户名重复,插入失败'*/
return 0
end
end
END