内容正文:
第八单元 数据库编程
任务8.1 用户自定义函数
任务8.2 创建存储过程
任务8.3创建触发器
8.1.1 情景描述
8.1.2问题分析
8.1.3 解决方案
8.1.4 知识总结
8.1.5 应用实践
任务8.1 用户自定义函数
学生信息管理系统里经常需要做一些重复性的操作,可把这些操作创建为函数来使用。数据库开发人员需要创建一个函数,要求该函数可以根据输入的专业名称,返回本专业学生的学号、姓名、性别、出生日期、身份证号。
8.1.1 情景描述
为了解决上述问题,需要完成以下任务:
1.分析专业名称和学生信息之间的关联,先从专业名称,在专业表中查询出专业代码,再由专业代码,在班级表中查询出班级编号,最后根据班级编号,在学生表中查询出学生的信息。
2.根据分析结果,写出创建函数的命令。
3.执行函数以验证结果。
8.1.2问题分析
1.打开SQL Server Management Studio,单击“对象资源管理器”中的“数据库”文件夹下的数据库“学生管理”;
2.单击工具栏上的“新建查询”命令,打开“查询编辑器”;
3.在“查询编辑器”上输入以下代码:
8.1.3 解决方案
CREATE FUNCTION funstudent(@major varchar(32))
RETURNS TABLE
AS
RETURN(SELECT 学号,姓名,性别,出生日期,身份证号
FROM 学生
WHERE 班级编号 IN( SELECT 班级代码
FROM 班级
WHERE 专业代码 IN (SELECT 专业代码
FROM 专业
WHERE 专业名称=@major)))
4.单击工具栏上的【执行】按钮,如图所示。
5.在“查询编辑器”上输入语句“SELECT * FROM funstudent ('软件技术')”,单击工具栏上的【执行】按钮,即可查询软件技术专业的学生的信息。
编程基础
变量与常量
IF…ELSE语句
CASE 语句
WHILE语句
RETURN语句
函数
标量函数
表值函数
8.1.4 知识总结
常量表示一个特定数据值的符号,在程序运行过程中始终保持不变,常量的格式取决于它所表示的值的数据类型,如字符常量必须用单引号括起来,由字母、数字及其它特殊字符组成;二进制常量由0、1构成;十进制整型常量不带小数点;日期常量也要用括号括起来等。
在程序运行过程中,值可以改变的量称为变量,按照变量的有效作用范围,可以分为局部变量和全局变量。局部变量的作用范围仅限于程序内部,局部变量名必须使用@符号开始。
全局变量的作用范围不仅仅局限于某一程序,任何程序均可以随时访问,全局变量经常存储一些SQL Server的配置设定和统计数据,不能由用户的程序定义,全局变量以符号@@开始。
变量与常量
局部变量用关键字DECLARE声明,语法格式如下:
DECLARE @变量名 数据类型
参数说明如下:
@变量名:局部变量的名称,必须使用@符号开始,变量名遵守标识符的命名规则。
数据类型:用于指定局部变量的数据类型,可以是由系统提供的除了text、ntext、image之外的数据类型。
变量声明
局部变量一旦声明,初始值默认为NULL,可以使用SET或SELECT命令为变量赋值,语法格式如下:
SET @变量名=表达式 或者
SELECT @变量名=表达式
参数说明如下:
@变量名:指定已经声明的要被赋值的变量名称。
表达式:合法的有效的SQL SERVER表达式。
变量的赋值
变量的值或常量的值可以通过SELECT或PRINT命令输出,语法格式如下:
SELECT 局部变量|全局变量|常量
PRINT 局部变量|全局变量|常量
参数说明如下:
@变量名:不加单引号。
常量:如果是字符串要用括号括起来,如果是多个字符串的连接,需要用+号连接。
变量的输出
【例8-1】定义一个字符串变量和整型变量,为其赋值,并输出查看结果。
DECLARE @course varchar(64),@a int
SELECT @course as '@course赋值前的值' ,@a as '@a赋值前的值'
SELECT @course ='sql server基础',@a=1
SELECT @course as '@course赋值后的值' ,@a as '@a赋值后的值'
SELECT '欢迎大家学习'