标签:
今天给大家总结一下sql server中的存储过程和函数。本人是小白,里面内容比较初级,大神不喜勿喷 自行飘过就是。。
首先给大家简单列出sql server中的流控制语句,后面会用到的^_^
1.begin..end语句:该语句用来定义一串由顺序执行的SQL语句构成的块。
begin statement block end
2.if....else语句:该语句用来定义有条件执行的某些语句。
if boolen_expression statement [else [if boolean_expression] statement]
if ( select min (mark) from student where sno= ‘9704‘) > 90 print ‘ 学生成绩全部优秀 ‘ else if ( select min (mark) from student where sno= ‘9704‘) >60 print ‘ 学生成绩全部及格 ‘ else print ‘ 学生成绩全部及格 ‘
3.while、break和continue语句:写过程序的同学相比对这个并不陌生,直接上代码
while(select avg( mark) from student) < 75 begin update student set mark= mark*1.05 if(select min( mark) from student) >=60 break end
4.declare语句:用来定义一个局部变量,可用select语句为该变量赋初值。这个变量必须用@开头,跟着一个标识符
declare @variable_name datatype [,@variable_name datatype]....
示例:查询学号为9704学生的成绩状况
declare @verygood int select @verygood = min( mark) /*使用select 赋值*/ from student where sno= ‘9704‘ if @verygood > 60 print ‘ 成绩合格‘
5.return语句:用来无条件地退出一个查询或一个过程。
return [int_expression]
6.waitfor语句:用来定义某天中的一个时刻,执行一个语句块。 语法如下
begin waitfor time ‘15:41‘ execute update_all_stats end
使用表结构
1. 创建存储过程
create procedure procedure_name [;version number] [{ @parameter data_type} [varying] [=default value][output] ] [,...n] [with {recompile|encryption|recompile,encryption}] [for replication] as sql_statement [...n]
解释:
create procedure usp_select_teacher @depart char( 10),@avg_age int output,@max_age int output as select * from teacher where dname= @depart select @max_age= max(age ) from teacher where dname= @depart select @avg_age= avg(age ) from teacher where dname= @depart if @avg_age <= 30 select ‘ 年龄结构‘= ‘年龄结构偏年轻‘, ‘平均年龄‘ =@avg_age if @avg_age > 30 and @avg_age <=40 select ‘ 年龄结构‘= ‘年龄结构合理‘, ‘平均年龄‘ =@avg_age if @avg_age > 40 select ‘ 年龄结构‘= ‘年龄结构偏大‘, ‘平均年龄‘ =@avg_age
2.调用存储过程
declare @avgage int ,@maxage int execute usp_select_teacher ‘ 计算机‘, @avgage output, @maxage output
我的运行结果如下:
1.标量型函数
create function year_wage(@work_date datetime, @now_date datetime,@per_wage decimal) returns decimal as begin return (( year(@now_date )-year( @work_date)) * @per_wage) end
调用函数语句:
select dbo. year_wage (‘2014-10-01‘ ,getdate(), 12) as ‘ 工龄工资‘
2.内联表值型函数
create function course_student(@course_name varchar(20 )) returns table as return ( select s.* from student as s,course as c where s. cno=c .cno and c.cno in(select cno from course where cname= @course_name))
调用函数语句:
select * from course_student (‘数据库设计 ‘)
create function [dbo].[TeacherInfo] (@depart varchar (20)) returns @TeacherInfo table (T_name varchar (8), T_sex char( 2), T_dname varchar( 20), T_cno int primary key , T_cname varchar( 20), t_ctime int) as begin insert @TeacherInfo select T. TNAME,T .TSEX, T.DNAME ,T. CNO,C .CNAME, C.CTIME FROM TEACHER AS T,COURSE AS C WHERE C. CNO=T .CNO AND T. CNO IN (SELECT CNO FROM TEACHER WHERE DNAME=@depart ) return end
调用函数语句:
select * from teacherinfo (‘数据库设计 ‘)
希望大家读后不要有不适、呕吐之感== 以上内容都是存储过程、函数基础知识,游标之类的没有出现 本着步步为营原则,先把基础的搞懂再说。我在这里主要起抛砖引玉的作用,希望各位同学能有一点收获就好
标签:
原文地址:http://www.cnblogs.com/kakarottoz/p/4947965.html