时间:2021-07-01 10:21:17 帮助过:6人阅读
存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。
存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数、输出参数、返回单个或多个结果集以及返回值。
由于存储过程在创建时即在数据库服务器上进行了编译并存储在数据库中,所以存储过程运行要比单个的SQL语句块要快。同时由于在调用时只需用提供存储过程名和必要的参数信息,所以在一定程度上也可以减少网络流量、简单网络负担。
- <span style="color: #008080;">--</span><span style="color: #008080;">===========系统存储过程==============</span>
- <span style="color: #008080;">--</span><span style="color: #008080;">显示系统数据库</span>
- <span style="color: #0000ff;">exec</span><span style="color: #000000;"> sp_databases
- </span><span style="color: #008080;">--</span><span style="color: #008080;">显示数据库详细信息</span>
- <span style="color: #0000ff;">exec</span><span style="color: #000000;"> sp_helpdb
- </span><span style="color: #008080;">--</span><span style="color: #008080;">给指定的数据库更换名称</span>
- <span style="color: #0000ff;">exec</span> sp_renamedb <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">aa</span><span style="color: #ff0000;">‘</span>,<span style="color: #ff0000;">‘</span><span style="color: #ff0000;">bb</span><span style="color: #ff0000;">‘</span>
- <span style="color: #008080;">--</span><span style="color: #008080;">查看指定表名的详细信息</span>
- <span style="color: #0000ff;">exec</span><span style="color: #000000;"> sp_help student
- </span><span style="color: #008080;">--</span><span style="color: #008080;">查看指定索引、视图、存储过程等的创建文本信息</span>
- <span style="color: #0000ff;">exec</span><span style="color: #000000;"> sp_helptext sp_help
- </span><span style="color: #008080;">--</span><span style="color: #008080;">调用存储过程必须在批处理文件第一位</span>
- <span style="color: #0000ff;">if</span> <span style="color: #808080;">exists</span>(<span style="color: #0000ff;">select</span> <span style="color: #808080;">*</span> <span style="color: #0000ff;">from</span> sysobjects <span style="color: #0000ff;">where</span> name <span style="color: #808080;">=</span> <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">Table1</span><span style="color: #ff0000;">‘</span><span style="color: #000000;">)
- </span><span style="color: #0000ff;">drop</span> <span style="color: #0000ff;">table</span><span style="color: #000000;"> Table1
- </span><span style="color: #0000ff;">go</span><span style="color: #000000;">
- sp_help sp_help
- </span><span style="color: #008080;">--</span><span style="color: #008080;">==========系统扩展存储过程================</span>
- <span style="color: #0000ff;">use</span><span style="color: #000000;"> master
- </span><span style="color: #0000ff;">go</span>
- <span style="color: #008080;">--</span><span style="color: #008080;">创建文件夹bank</span>
- <span style="color: #0000ff;">exec</span> xp_cmdshell <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">mkdir D:\bank</span><span style="color: #ff0000;">‘</span><span style="color: #000000;">,no_output
- </span><span style="color: #0000ff;">if</span> <span style="color: #808080;">exists</span>(<span style="color: #0000ff;">select</span> <span style="color: #808080;">*</span> <span style="color: #0000ff;">from</span> sysdatabases <span style="color: #0000ff;">where</span> name <span style="color: #808080;">=</span> <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">bankDB</span><span style="color: #ff0000;">‘</span><span style="color: #000000;">)
- </span><span style="color: #0000ff;">drop</span> <span style="color: #0000ff;">database</span><span style="color: #000000;"> bankDB
- </span><span style="color: #0000ff;">go</span>
- <span style="color: #0000ff;">create</span> <span style="color: #0000ff;">database</span><span style="color: #000000;"> bankDB
- </span><span style="color: #0000ff;">on</span> <span style="color: #0000ff;">primary</span><span style="color: #000000;">
- (
- name </span><span style="color: #808080;">=</span> <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">bankDB</span><span style="color: #ff0000;">‘</span><span style="color: #000000;">,
- filename </span><span style="color: #808080;">=</span> <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">D:\bank\bankDB.mdf</span><span style="color: #ff0000;">‘</span><span style="color: #000000;">,
- size </span><span style="color: #808080;">=</span><span style="color: #000000;"> 5MB,
- maxsize </span><span style="color: #808080;">=</span><span style="color: #000000;"> 10MB,
- filegrowth </span><span style="color: #808080;">=</span> <span style="color: #800000; font-weight: bold;">15</span><span style="color: #808080;">%</span><span style="color: #000000;">
- )</span><span style="color: #ff00ff;">log</span> <span style="color: #0000ff;">on</span><span style="color: #000000;">(
- name </span><span style="color: #808080;">=</span> <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">bankDB_log</span><span style="color: #ff0000;">‘</span><span style="color: #000000;">,
- filename </span><span style="color: #808080;">=</span> <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">D:\bank\bankDB_log.ldf</span><span style="color: #ff0000;">‘</span><span style="color: #000000;">,
- size </span><span style="color: #808080;">=</span><span style="color: #000000;"> 5MB,
- filegrowth </span><span style="color: #808080;">=</span> <span style="color: #800000; font-weight: bold;">15</span><span style="color: #808080;">%</span><span style="color: #000000;">
- )
- </span><span style="color: #008080;">--</span><span style="color: #008080;">调用储存过程查看文件夹信息</span>
- <span style="color: #0000ff;">exec</span> xp_cmdshell <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">dir D:\bank\</span><span style="color: #ff0000;">‘</span>
- <span style="color: #008080;">--</span><span style="color: #008080;">========创建存储过程,查询Java Logic最近一次考试平均分以及未通过考试的学员名单=========</span>
- <span style="color: #0000ff;">use</span><span style="color: #000000;"> MySchool
- </span><span style="color: #0000ff;">go</span>
- <span style="color: #0000ff;">if</span> <span style="color: #808080;">exists</span>(<span style="color: #0000ff;">select</span> <span style="color: #808080;">*</span> <span style="color: #0000ff;">from</span> sysobjects <span style="color: #0000ff;">where</span> name <span style="color: #808080;">=</span> <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">sp_getavgresult</span><span style="color: #ff0000;">‘</span><span style="color: #000000;">)
- </span><span style="color: #0000ff;">drop</span> <span style="color: #0000ff;">proc</span><span style="color: #000000;"> sp_getavgresult
- </span><span style="color: #0000ff;">go</span>
- <span style="color: #008080;">--</span><span style="color: #008080;">创建存储过程实现</span>
- <span style="color: #0000ff;">create</span> <span style="color: #0000ff;">proc</span><span style="color: #000000;"> sp_getavgresult
- </span><span style="color: #008000;">@returnnum</span> <span style="color: #0000ff;">int</span> output, <span style="color: #008080;">--</span><span style="color: #008080;">返回未及格的人数</span>
- <span style="color: #008000;">@returnsum</span> <span style="color: #0000ff;">int</span> output, <span style="color: #008080;">--</span><span style="color: #008080;">参加考试总人数</span>
- <span style="color: #008000;">@subjectName</span> <span style="color: #0000ff;">varchar</span>(<span style="color: #800000; font-weight: bold;">30</span>), <span style="color: #008080;">--</span><span style="color: #008080;">添加科目</span>
- <span style="color: #008000;">@score</span> <span style="color: #0000ff;">int</span> <span style="color: #808080;">=</span> <span style="color: #800000; font-weight: bold;">60</span> <span style="color: #008080;">--</span><span style="color: #008080;">添加输入参数(及格分数)</span>
- <span style="color: #0000ff;">as</span>
- <span style="color: #0000ff;">declare</span> <span style="color: #008000;">@subjectId</span> <span style="color: #0000ff;">int</span>
- <span style="color: #0000ff;">declare</span> <span style="color: #008000;">@maxdate</span><span style="color: #000000;"> date
- </span><span style="color: #0000ff;">declare</span> <span style="color: #008000;">@avg</span> <span style="color: #0000ff;">int</span>
- <span style="color: #008080;">--</span><span style="color: #008080;">查询java logic课程的编号</span>
- <span style="color: #0000ff;">select</span> <span style="color: #008000;">@subjectId</span> <span style="color: #808080;">=</span> SubjectId <span style="color: #0000ff;">from</span> Subject <span style="color: #0000ff;">where</span> SubjectName <span style="color: #808080;">=</span> <span style="color: #008000;">@subjectName</span>
- <span style="color: #008080;">--</span><span style="color: #008080;">查询java logic课程最近一次考试时间</span>
- <span style="color: #0000ff;">select</span> <span style="color: #008000;">@maxdate</span> <span style="color: #808080;">=</span> <span style="color: #ff00ff;">MAX</span>(ExamDate) <span style="color: #0000ff;">from</span> Result <span style="color: #0000ff;">where</span> SubjectId <span style="color: #808080;">=</span> <span style="color: #008000;">@subjectId</span>
- <span style="color: #008080;">--</span><span style="color: #008080;">查询java logic课程最近一次考试的平均分</span>
- <span style="color: #0000ff;">select</span> <span style="color: #008000;">@avg</span> <span style="color: #808080;">=</span> <span style="color: #ff00ff;">AVG</span>(StudentResult) <span style="color: #0000ff;">from</span> Result <span style="color: #0000ff;">where</span><span style="color: #000000;">
- SubjectId </span><span style="color: #808080;">=</span> <span style="color: #008000;">@subjectId</span> <span style="color: #808080;">and</span> ExamDate <span style="color: #808080;">=</span> <span style="color: #008000;">@maxdate</span>
- <span style="color: #0000ff;">print</span> <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">未通过考试的人员名单:=======================</span><span style="color: #ff0000;">‘</span>
- <span style="color: #008080;">--</span><span style="color: #008080;">查询java logic课程最近一次考试未通过的学生名单</span>
- <span style="color: #0000ff;">select</span> studentName,studentResult <span style="color: #0000ff;">from</span><span style="color: #000000;"> student s
- </span><span style="color: #0000ff;">inner</span> <span style="color: #808080;">join</span> Result r <span style="color: #0000ff;">on</span> r.StudentNo <span style="color: #808080;">=</span><span style="color: #000000;"> s.StudentNo
- </span><span style="color: #0000ff;">where</span> SubjectId <span style="color: #808080;">=</span> <span style="color: #008000;">@subjectId</span>
- <span style="color: #808080;">and</span> ExamDate <span style="color: #808080;">=</span> <span style="color: #008000;">@maxdate</span>
- <span style="color: #808080;">and</span> StudentResult <span style="color: #808080;"><</span> <span style="color: #008000;">@score</span>
- <span style="color: #008080;">--</span><span style="color: #008080;">查询参加考试的总人数</span>
- <span style="color: #0000ff;">select</span> <span style="color: #008000;">@returnsum</span> <span style="color: #808080;">=</span> <span style="color: #ff00ff;">COUNT</span>(<span style="color: #808080;">*</span>) <span style="color: #0000ff;">from</span> Result <span style="color: #0000ff;">where</span> ExamDate <span style="color: #808080;">=</span> <span style="color: #008000;">@maxdate</span> <span style="color: #808080;">and</span> SubjectId <span style="color: #808080;">=</span> <span style="color: #008000;">@subjectId</span>
- <span style="color: #008080;">--</span><span style="color: #008080;">查询未及格的人数 </span>
- <span style="color: #0000ff;">select</span> <span style="color: #008000;">@returnnum</span> <span style="color: #808080;">=</span> <span style="color: #ff00ff;">COUNT</span>(<span style="color: #808080;">*</span>) <span style="color: #0000ff;">from</span> Result <span style="color: #0000ff;">where</span> ExamDate <span style="color: #808080;">=</span> <span style="color: #008000;">@maxdate</span> <span style="color: #808080;">and</span> SubjectId <span style="color: #808080;">=</span> <span style="color: #008000;">@subjectId</span>
- <span style="color: #808080;">and</span> StudentResult <span style="color: #808080;"><</span> <span style="color: #008000;">@score</span>
- <span style="color: #0000ff;">if</span>(<span style="color: #008000;">@avg</span> <span style="color: #808080;">></span> <span style="color: #800000; font-weight: bold;">70</span><span style="color: #000000;">)
- </span><span style="color: #0000ff;">begin</span>
- <span style="color: #0000ff;">print</span> <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">考试结果:优秀</span><span style="color: #ff0000;">‘</span>
- <span style="color: #0000ff;">end</span>
- <span style="color: #0000ff;">else</span>
- <span style="color: #0000ff;">begin</span>
- <span style="color: #0000ff;">print</span> <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">考试结果:较差</span><span style="color: #ff0000;">‘</span>
- <span style="color: #0000ff;">end</span>
- <span style="color: #0000ff;">go</span>
- <span style="color: #008080;">--</span><span style="color: #008080;">=======调用储存过程实现业务逻辑===========----</span>
- <span style="color: #0000ff;">declare</span> <span style="color: #008000;">@sum</span> <span style="color: #0000ff;">int</span> <span style="color: #008080;">--</span><span style="color: #008080;">参加考试总人数</span>
- <span style="color: #0000ff;">declare</span> <span style="color: #008000;">@num</span> <span style="color: #0000ff;">int</span> <span style="color: #008080;">--</span><span style="color: #008080;">未及格人数</span>
- <span style="color: #0000ff;">declare</span> <span style="color: #008000;">@percent</span> <span style="color: #0000ff;">float</span>(<span style="color: #800000; font-weight: bold;">2</span>) <span style="color: #008080;">--</span><span style="color: #008080;">及格百分比</span>
- <span style="color: #008080;">--</span><span style="color: #008080;">调用存储过程</span>
- <span style="color: #0000ff;">exec</span> sp_getavgresult <span style="color: #008000;">@num</span> output,<span style="color: #008000;">@sum</span> output,<span style="color: #008000;">@subjectName</span> <span style="color: #808080;">=</span> <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">java logic</span><span style="color: #ff0000;">‘</span>,<span style="color: #008000;">@score</span> <span style="color: #808080;">=</span> <span style="color: #800000; font-weight: bold;">60</span>
- <span style="color: #0000ff;">print</span> <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">=========================================</span><span style="color: #ff0000;">‘</span>
- <span style="color: #0000ff;">print</span> <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">参加考试人数为:</span><span style="color: #ff0000;">‘</span> <span style="color: #808080;">+</span> <span style="color: #ff00ff;">convert</span>(<span style="color: #0000ff;">varchar</span>(<span style="color: #800000; font-weight: bold;">30</span>),<span style="color: #008000;">@sum</span><span style="color: #000000;">)
- </span><span style="color: #0000ff;">print</span> <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">未及格人数为:</span><span style="color: #ff0000;">‘</span> <span style="color: #808080;">+</span> <span style="color: #ff00ff;">convert</span>(<span style="color: #0000ff;">varchar</span>(<span style="color: #800000; font-weight: bold;">30</span>),<span style="color: #008000;">@num</span><span style="color: #000000;">)
- </span><span style="color: #008080;">--</span><span style="color: #008080;">计算及格率</span>
- <span style="color: #0000ff;">set</span> <span style="color: #008000;">@percent</span> <span style="color: #808080;">=</span> <span style="color: #ff00ff;">convert</span>(<span style="color: #0000ff;">float</span>(<span style="color: #800000; font-weight: bold;">2</span>),(<span style="color: #008000;">@sum</span> <span style="color: #808080;">-</span> <span style="color: #008000;">@num</span>))<span style="color: #808080;">/</span><span style="color: #008000;">@sum</span> <span style="color: #808080;">*</span> <span style="color: #800000; font-weight: bold;">100</span>
- <span style="color: #0000ff;">print</span> <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">及格百分比:</span><span style="color: #ff0000;">‘</span> <span style="color: #808080;">+</span> <span style="color: #ff00ff;">convert</span>(<span style="color: #0000ff;">varchar</span>(<span style="color: #800000; font-weight: bold;">30</span>),<span style="color: #008000;">@percent</span>) <span style="color: #808080;">+</span><span style="color: #ff0000;">‘</span><span style="color: #ff0000;">%</span><span style="color: #ff0000;">‘</span>
- <span style="color: #008080;">--</span><span style="color: #008080;">判断是否要调及格分数线</span>
- <span style="color: #0000ff;">if</span>(<span style="color: #008000;">@percent</span> <span style="color: #808080;">></span> <span style="color: #800000; font-weight: bold;">50</span><span style="color: #000000;">)
- </span><span style="color: #0000ff;">begin</span>
- <span style="color: #0000ff;">print</span> <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">不需要调分数线。。。</span><span style="color: #ff0000;">‘</span>
- <span style="color: #0000ff;">end</span>
- <span style="color: #0000ff;">else</span>
- <span style="color: #0000ff;">begin</span>
- <span style="color: #0000ff;">print</span> <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">需要降低分数线。。。</span><span style="color: #ff0000;">‘</span>
- <span style="color: #0000ff;">end</span>
SQL Server之存储过程
标签: