网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > SQL语法 > 正文

sql存储过程很全

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

【网学网提醒】:网学会员为您提供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]
    
  • 上一篇资讯: sql存储过程语法
  • 下一篇资讯: SQL存储过程基础语法
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师