六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 232|回复: 0

sql 存储过程 几个 简单例子

[复制链接]

升级  70.67%

124

主题

124

主题

124

主题

举人

Rank: 3Rank: 3

积分
412
 楼主| 发表于 2013-1-14 23:28:30 | 显示全部楼层 |阅读模式
例1:
create proc proc_stu
@sname varchar(20),
@pwd varchar(20)
as
select * from ren where [email=sname=@sname]sname=@sname[/email] and [email=pwd=@pwd]pwd=@pwd[/email]
go
查看结果:proc_stu 'admin','admin'

例2:
下面的存储过程实现用户验证的功能,如果不成功,返回0,成功则返回1.
CREATE PROCEDURE VALIDATE @USERNAME CHAR(20),@PASSWORD CHAR(20),@LEGAL BIT OUTPUT
AS
IF EXISTS(SELECT * FROM REN WHERE SNAME = @USERNAME AND PWD = @PASSWORD)
SELECT @LEGAL = 1
ELSE
SELECT @LEGAL = 0
在程序中调用该存储过程,并根据@LEGAL参数的值判断用户是否合法。

例3:一个高效的数据分页的存储过程 可以轻松应付百万数据
 
CREATE PROCEDURE pageTest --用于翻页的测试
--需要把排序字段放在第一列
(
@FirstID nvarchar(20)=null, --当前页面里的第一条记录的排序字段的值
@LastID nvarchar(20)=null, --当前页面里的最后一条记录的排序字段的值
@isNext bit=null,    --true 1 :下一页;false 0:上一页
@allCount int output,   --返回总记录数
@pageSize int output,   --返回一页的记录数
@CurPage int     --页号(第几页)0:第一页;-1最后一页。
)
AS
if @CurPage=0--表示第一页
begin
--统计总记录数
select @allCount=count(ProductId) from Product_test
  
set @pageSize=10
--返回第一页的数据
select top 10
   ProductId,
   ProductName,
   Introduction  
   from Product_test order by ProductId
end
else if @CurPage=-1--表示最后一页
select * from
(select top 10 ProductId,
   ProductName,
   Introduction
from Product_test order by ProductId desc ) as aa
order by ProductId
else
begin
if @isNext=1
   --翻到下一页
   select top 10 ProductId,
   ProductName,
   Introduction
from Product_test where ProductId > @LastID order by ProductId
  
  
else
   --翻到上一页
   select * from
    (select top 10 ProductId,
   ProductName,
   Introduction
from Product_test where ProductId < @FirstID order by ProductId desc) as bb order by ProductId
end
 
 
<div class="tit">例4. 一个SQL语句把两个查询结果union叠加起来
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表