请问这个简单的存储过程该怎么写?

Dickly2005 2006-04-27 02:38:29
数据库PLM里面有一个表SM_User,该表有Usercode,UserName,Password三个字段!
现在要写一个存储过程是在该表添加数据,并且在存储过程里面验证Usercode不能为空,
而且Usercode不能有重复的值!
...全文
142 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xeqtr1982 2006-04-27
  • 打赏
  • 举报
回复
楼上解释的很清楚 :)
hglhyy 2006-04-27
  • 打赏
  • 举报
回复
主要是用后面的 条件 Usercode=@Usercode

select 1 from 这是没用的,也就是说没必要去写字段什么的,当然,你要改成
select * from 也是可以的! 当这样的话,系统就要提取字段名 ,速度比 select 1 from 慢。
而在这里,只要得到一个判断的结果,not exists,所以字段就不用写上了!
losedxyz 2006-04-27
  • 打赏
  • 举报
回复
select 1 from SM_User where Usercode=@Usercode

这句的那个1是什么意思?
十一月猪 2006-04-27
  • 打赏
  • 举报
回复
primary key
xeqtr1982 2006-04-27
  • 打赏
  • 举报
回复
create table SM_User(Usercode varchar(10),UserName varchar(10),[Password] varchar(10))
go

create proc [insert]
@Usercode varchar(10),
@UserName varchar(10),
@Password varchar(10)
as

if(@Usercode is not NULL)
begin
if not exists(select 1 from SM_User where Usercode=@Usercode)
begin
insert into SM_User values(@Usercode,@UserName,@Password)
end
else
begin
raiserror('已经存在该Usercode的记录!',16,1)
end
end
else
begin
raiserror('Usercode不能为NULL!',16,1)
end
go

exec [insert] '1','aa','aaaaa'
go

exec [insert] '1','aaaaa','aaaaaaaaa'
go


drop proc [insert]
drop table SM_User
xeqtr1982 2006-04-27
  • 打赏
  • 举报
回复
为什么要用存储过程控制呢?直接设置Usercode为主键不就可以了吗
sxdoujg 2006-04-27
  • 打赏
  • 举报
回复
up
losedxyz 2006-04-27
  • 打赏
  • 举报
回复
还有这种用法:))

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧