if exists(select * from sysdatabases
where name='testdb')
drop database testdb
go
create database testdb
go
create table login
(
uid int primary key identity(1,1),
uname varchar(20),
upwd varchar(50)
)
go
insert login values('admin','admin')
insert login values('test','test')
go
--最简单的存储过程
create procedure pro_add
as
insert login values('user','user')
go
pro_add
--带输入参数的存储过程(注册一个新用户)
create proc pro_insert
@name varchar(10),  --形参
@pwd varchar(50)
as
insert login values(@name,@pwd)
go
exec pro_insert '张三','123'   --实参
go
--带输出参数的存储过程(登陆)
alter proc pro_login
@name varchar(10),
@pwd varchar(50),
@message varchar(50) output
as
if (select count(*) from login where uname=@name)>0
begin
  --用户名存在
  if(select count(*) from login where [email=upwd=@pwd]upwd=@pwd[/email] and uname=@name)>0
  begin
   --密码正确
   set @message ='登陆成功'
  end
  else
  begin
   set @message='密码错误'
  end
end
else
begin
  set @message='用户名不存在'
end
go
declare @m varchar(20)
exec pro_login 'admin','user',@m output
print @m
go
--带返回值得存储过程(判断用户名是否存在,如果存在则返回1,否则返回0)
alter proc pro_return
@name varchar(20)
as
if(select count(*) from login where uname=@name)>0
  return 1
else
  return 0
go
declare @i varchar(20)
exec @i=pro_return 'admin'
print @i
go
--带返回结果集的存储过程
alter proc pro_select
@row int
as
declare @str varchar(200)
set @str='select top '+cast( @row as varchar(10)) +' * from login'
exec(@str)  --执行字符串SQL语句
go
exec pro_select 3