【网学网提醒】:网学会员为您提供sql存储过程很全参考,解决您在sql存储过程很全学习中工作中的难题,参考学习。
首页资讯精华论坛问答博客专栏群组更多▼招聘
搜索
您还未登录!登录注册qsfwy博客微博相册收藏留言关于我sql存储过程几个简单例子
博客分类:sql
SQLSQLServerGoInformixC
例1:
createprocproc_stu
@snamevarchar(20),
@pwdvarchar(20)
as
select*fromrenwheresname=@snameandpwd=@pwd
go
查看结果:proc_stu'admin','admin'
例2:
下面的存储过程实现用户验证的功能,如果不成功,返回0,成功则返回1.
CREATEPROCEDUREVALIDATE@USERNAMECHAR(20),@PASSWORDCHAR(20),@LEGALBITOUTPUT
AS
IFEXISTS(SELECT*FROMRENWHERESNAME=@USERNAMEANDPWD=@PASSWORD)
SELECT@LEGAL=1
ELSE
SELECT@LEGAL=0
在程序中调用该存储过程,并根据@LEGAL参数的值判断用户是否合法。
例3:一个高效的数据分页的存储过程可以轻松应付百万数据
CREATEPROCEDUREpageTest--用于翻页的测试
--需要把排序字段放在第一列
(
@FirstIDnvarchar(20)=null,--当前页面里的第一条记录的排序字段的值
@LastIDnvarchar(20)=null,--当前页面里的最后一条记录的排序字段的值
@isNextbit=null,--true1:下一页;false0:上一页
@allCountintoutput,--返回总记录数
@pageSizeintoutput,--返回一页的记录数
@CurPageint--页号(第几页)0:第一页;-1最后一页。
)
AS
if@CurPage=0--表示第一页
begin
--统计总记录数
select@allCount=count(ProductId)fromProduct_test
set@pageSize=10
--返回第一页的数据
selecttop10
ProductId,
ProductName,
Introduction
fromProduct_testorderbyProductId
end
elseif@CurPage=-1--表示最后一页
select*from
(selecttop10ProductId,
ProductName,
Introduction
fromProduct_testorderbyProductIddesc)asaa
orderbyProductId
else
begin
if@isNext=1
--翻到下一页
selecttop10ProductId,
ProductName,
Introduction
fromProduct_testwhereProductId>@LastIDorderbyProductId
else
--翻到上一页
select*from
(selecttop10ProductId,
ProductName,
Introduction
fromProduct_testwhereProductId<@FirstIDorderbyProductIddesc)asbborderbyProductId
end
例4.一个SQL语句把两个查询结果union叠加起来
举例如下:
droptabletest1;
droptabletest2;
createtabletest1(achar(4),cchar(4));
createtabletest2(achar(4),cchar(4));
insertintotest1values('aaa','bbb')
insertintotest1values('aaa','aaa')
insertintotest2values('ccc','aaa')
insertintotest2values('aaa','aaa')
select1asb,*fromtest1wherealike'aaa'
unionselect2asb,*fromtest2whereclike'aaa'
orderbyb
这个就是你那条语句,返回结果为
1aaaaaa
1aaabbb
2aaaaaa
2cccaaa
1,2表示查询出来的记录来源于那一个表格
先在去除重复的范围内选
取,举例如下:
select1asb,*fromtest1wherealike'aaa'
unionselect2asb,*fromtest2whereclike'aaa'and(a+c)notin(selecta+cfromtest1)
orderbyb
返回结果:
1aaaaaa
1aaabbb
2cccaaa
具体怎么改你的语句,根据实际情况来。我这个例子简单,就是用(a+c)notin(selecta+cfromtest1)说明一下去除重复的范围。
例5.sqlserver中casewhenthenelseend的用法(条件判断语法)
CASE可能是SQL中被误用最多的关键字之一。虽然你可能以前用过这个关键字来创建字段,但是它还具有更多用法。例如,你可以在WHERE
子句中使用CASE。
首先让我们看一下CASE的语法。在一般的SELECT中,其语法如下:
SELECT=
CASE
WHENTHEN
WHENTHEN
ELSE
END
在上面的代码中需要用具体的参数代替尖括号中的内容。下面是一个简单的例子:
USEpubs
GO
SELECT
Title,
'PriceRange'=
CASE
WHENpriceISNULLTHEN'Unpriced'
WHENprice<10THEN'Bargain'
WHENpriceBETWEEN10and20THEN'Average'
ELSE'Gifttoimpressrelatives'
END
FROMtitles
ORDERBYprice
GO
对于informix不能用以上形式,可以如下:
USEpubs
GO
SELECT
Title,
CASE
WHENpriceISNULLTHEN'Unpriced'
WHENprice<10THEN'Bargain'
WHENpriceBETWEEN10and20THEN'Average'
ELSE'Gifttoimpressrelatives'
END
PriceRange
FROMtitles
ORDERBYprice
GO
这是CASE的典型用法,但是使用CASE其实可以做更多的事情。比方说下面的GROUPBY子句中的CASE:
SELECT'NumberofTitles',Count(*)
FROMtitles
GROUPBY
CASE
WHENpriceISNULLTHEN'Unpriced'
WHENprice<10THEN'Bargain'
WHENpriceBETWEEN10and20THEN'Average'
ELSE'Gifttoimpressrelatives'
END
GO
你甚至还可以组合这些选项,添加一个ORDERBY子句,如下所示:
USEpubs
GO
SELECT
CASE
WHENpriceISNULLTHEN'Unpriced'
WHENprice<10THEN'Bargain'
WHENpriceBETWEEN10and20THEN'Average'
ELSE'Gifttoimpressrelatives'
ENDASRange,
Title
FROMtitles
GROUPBY
CASE
WHENpriceISNULLTHEN'Unpriced'
WHENprice<10THEN'Bargain'
WHENpriceBETWEEN10and20THEN'Average'
ELSE'Gifttoimpressrelatives'
END,
Title
ORDERBY
CASE
WHENpriceISNULLTHEN'Unpriced'
WHENprice<10THEN'Bargain'
WHENpriceBETWEEN10and20THEN'Average'
ELSE'Gifttoimpressrelatives'
END,
Title
GO
对于informix中形式有所不同,例子
select
casewhentd_acc1_no[1,3]='610'thenget_contrast(td_acc1_no)
elseget_contrast(td_td_acct_no)
endsx_acct_no
,sum(td_actu_amt)sx_bal
fromdcc_tdacnacnwheretd_td_acct_noin('6107111001014107111000050182',
'6107111001014107111000050168')
groupby1
注意,为了在GROUPBY块中使用CASE,查询语句需要在GROUPBY块中重
复SELECT块中的CASE块。
除了选择自定义字段之外,在很多情况下CASE都非常有用。再深入一步,你还可以得到你以前认为不可能得到的分组排序结果集。
6.同时更新多条记录(case语法)
droptableT_ABCItem
createtableT_ABCItem(F_AutoIDint,F_Namevarchar(20))
insertintoT_ABCItem(F_AutoID,F_Name)values(1,'')
insertintoT_ABCItem(F_AutoID,F_Name)values(2,'')
insertintoT_ABCItem(F_AutoID,F_Name)values(3,'')
UPDATET_ABCItemSETF_Name=(caseF_AutoIDwhen1then'值1'when2then'值2'when3then'值3'end)
7.SQLServer从N条记录开始的M条记录语句
1.selecttop6*fromKH_CustomerWHEREIDNOTIN(SELECTTOP4IDFROMKH_Customer)
2.selecttop6*
fromKH_Customer
whereid>(selectmax(id)from(selecttop4idfromKH_Customerorderbyid)a)
orderbyid
两条sql语句都是实现查询从第5条到第10条的记录
但据说第二条比较快一点,比如表中有300多万条记录,使用第1条语句执行时间需要9秒多,而用第2条语句3秒多
8.--------------
--======================================================
--列出SQLSERVER所有表,字段名,主键,类型,长度,小数位数等信息
--在查询分析器里运行即可,可以生成一个表,导出到EXCEL中
--======================================================
SELECT
(casewhena.colorder=1thend.nameelse''end)表名,
a.colorder字段序号,
a.name字段名,
(casewhenCOLUMNPROPERTY(a.id,a.name,'IsIdentity')=1then'√'else''end)标识,
(casewhen(SELECTcount(*)
FROMsysobjects
WHERE(namein
(SELECTname
FROMsysindexes
WHERE(id=a.id)AND(indidin
(SELECTindid
FROMsysindexkeys
WHERE(id=a.id)AND(colidin
(SELECTcolid
FROMsyscolumns
WHERE(id=a.id)AND(name=a.name)))))))AND
(xtype='PK'))>0then'√'else''end)主键,
b.name类型,
a.length占用字节数,
COLUMNPROPERTY(a.id,a.name,'PRECISION')as长度,
isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0)as小数位数,
(casewhena.isnullable=1then'√'else''end)允许空,
isnull(e.text,'')默认值,
isnull(g.[value],'')AS字段说明
FROMsyscolumnsaleftjoinsystypesb
ona.xtype=b.xusertype
innerjoinsysobjectsd
ona.id=d.idandd.xtype='U'andd.name<>'dtproperties'
leftjoinsyscommentse
ona.cdefault=e.id
leftjoinsyspropertiesg
ona.id=g.idANDa.colid=g.smallid
orderbya.id,a.colorder
分享到:
SqlServer存储过程分页总结|SqlServer中查看表结构字段,主键,外键,.
..2008-10-1013:19浏览6163评论(0)相关推荐评论发表评论
您还没有登录,请您登录后再发表评论
qsfwy
浏览:514056次
性别:
来自:上海
最近访客更多访客>>
ruijin5566wangtingzhwhoshaofengsniperhtc
文章分类
全部博客(309)
javaScript校验(11)
java(29)
java连接数据库(1)
js应用(41)
JQuery(15)
linux操作命令(11)
loadrunner测试(5)
tomcat(18)
数据库(12)
eclipse(7)
触发器(7)
表单(3)
ibatis(6)
oracle(4)
xml(1)
Exception(5)
spring(11)
struts(4)
struts标签(2)
sql(8)
sqlserver(6)
其它(18)
Apache(2)
电脑故障(4)
java线程(1)
dwr(8)
jackey(18)
总结(34)
gcclinux(2)
extjs学习(4)
网站建设(3)
健康(2)
房地产知识(1)
hibernate(3)
mysql(1)
社区版块
我的资讯(0)
我的论坛(4)
我的问答(0)
存档分类
2012-03(3)
2011-12(1)
2011-11(1)
更多存档...
最新评论
xq30397022:写的真是好,太全了,感谢楼主!
Struts2+jQuery+JSON实现异步交互
tangzlboy:入门不错!
linux下c语言编程GCC使用入门
thurchin:写的不错,支持
Struts2+jQuery+JSON实现异步交互
kingsmalltwo:感谢!!!已测试成功!!!
Struts2+jQuery+JSON实现异步交互
415421979:非常感谢!!!!
Struts2+jQuery+JSON实现异步交互
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。若作者同意转载,必须以超链接形式标明文章原始出处和作者。
?2003-2011ITeye.Allrightsreserved.[京ICP证110151号京公网安备110105010620]