数据库——实验9 存储过程的使用

news2024/11/24 12:28:31

1. 存储过程的定义

存储过程是一系列预先编辑好的、能实现特定数据操作功能的SQL 代码集,它与特定的数据库相关联,存储在SQL  Server服务器上。用户可以像使用自定义的函数一样重复调用这些存储过程,实现它所定义的操作。

2. 存储过程的类型

存储过程分为3类:系统存储过程、用户自定义存储过程和扩展存储过程。 

(1)系统存储过程主要存储在 master  数据库中并以 sp_ 为前缀。

(2)用户自定义存储过程是由用户创建并能完成某一特定功能(如查询用户所需数据信息)的存储过程,是封装了可重用代码的 SQL 语句模块。

(3)扩展存储过程允许使用高级编程语言(例如C 语言)创建应用程序的外部例程而使SQL   Server 的实例可以动态地加载和运行 DLL

3. 创建存储过程的步骤

一般来说,创建一个存储过程应按照以下步骤进行:

(1)编写SQL 语句。

(2)测试 SQL 语句是否正确,并能实现功能要求。

(3)若得到的结果数据符合预期要求,则按照存储过程的语法,创建该存储过程。 

(4)执行该存储过程,验证其正确性。

4. 使用 SQL 语句创建存储过程

创建存储过程的语法格式:

CREATE PROC [ EDURE ] procedure_name [ ;number ]

[ @parameter  data_type  [= default  ],…]

AS sql_statement

说明:

·procedure_name:给出存储过程名。

·Number:为可选的整数,对同名的存储过程指定一个序号。

·@parameter: 为存储过程的形参,@符号作为第一个字符来指定参数名。 

·data_type:指出参数的数据类型。

·=default:给出参数的默认值。

·sql_statement: 存储过程所要执行的 SQL 语句,它可以是一组 SQL 语句,可以包含流程控制语句等。

5. 创建、修改、调用、删除存储过程示例

在“学生管理”数据库中有“学生”表、“课程”表、“成绩”表结构如图1-20所示。 

1)创建存储过程

如果要通过SQL 语句创建一个存储过程,存储过程名为 student_grade,   要求现实如下功能:查询“学生管理”数据库中每个学生各门功课的成绩,其中包括每个学生的学号、姓名、课程名、分数,创建该存储过程的语句如下:

CREATE PROCEDURE student_grade

AS

SELECT 学号,姓名,课程名,分数

FROM 学生,课程,成绩

WHERE 学生.学号=成绩.学号 AND 成绩.课程号=课程.课程号

GO

2)修改存储过程

存储过程 student_grade 已创建,根据要求对它进行修改,只要使用 ALTER PROCEDURE 语句即可实现。

修改存储过程 student_grade,, 实现查询“学生管理”数据库中计算机系学生各门功课的成绩,其中包括每个学生的学号、姓名、课程名、学分、分数。

ALTER PROCEDURE student_grade

AS

SELECT 学号,姓名,课程名,学分,分数

FROM 学生,课程,成绩

WHERE 学生.学号=成绩.学号 AND 成绩.课程号=课程.课程号

AND学生.所在院系='计算机系'

GO

3)调用存储过程

EXEC student_grade

GO

4)删除存储过程

无用的存储过程可用 DROP 语句将其删除。

DROP PROCEDURE student_grade

GO

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1607616.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

抖音小店怎么做?跟着这五个步骤来,很快就学会了!

大家好,我是电商糖果 看着身边的人,都在抖音上开网店赚到钱了。 自己也想尝试一下。 可是不懂小店的运营流程,从哪里开始下手都不知道。 糖果做抖音小店有四年时间了,也开了多家新店,我总共将店铺运营分为了五个步…

Golang图像处理实战:image/png包的应用详解

Golang图像处理实战:image/png包的应用详解 介绍基本操作读取PNG文件保存PNG文件 处理图像数据修改图像像素图像裁剪和缩放 高级功能使用 image/color 处理颜色优化PNG性能 错误处理与调试常见错误及其解决方法文件无法打开图像解码失败 使用工具和库进行调试 结语 …

ASP.NET MVC企业级程序设计 (商品管理:小计,总计,删除,排序)

目录 效果图 实现过程 1创建数据库 2创建项目文件 3创建控制器,右键添加,控制器 ​编辑 注意这里要写Home​编辑 创建成功 数据模型创建过程之前作品有具体过程​编辑 4创建DAL 5创建BLL 6创建视图,右键添加视图 ​编辑 7HomeCont…

vscode+vue开发常用插件整理

前言: vscode新机开发常用插件整理 1、chinese 简体中文配置 2、file-jump 别名跳转,可以把引入的组件,通过ctrl地址名 跳转组件内部 3、Vue Peek:vue项目中的一些配置,安装后,能实现 ctrl组件名 跳转…

华为ensp中Hybrid接口原理和配置命令

作者主页:点击! ENSP专栏:点击! 创作时间:2024年4月19日14点03分 Hybrid接口是ENSP虚拟化中的一种重要技术,它既可以连接普通终端的接入链路,又可以连接交换机间的干道链路。Hybrid接口允许多…

栈和队列OJ(面试高频题 - 看完包!!!拿捏)

目录 题目一:括号匹配问题(来源) 题目描述 题目思路及实现 题目二:用队列实现栈(来源) 题目描述 题目思路及实现 题目三:用栈实现队列(来源) 题目描述 题目思路及实现 …

【个人博客搭建】(3)添加SqlSugar ORM 以及Json配置文件读取

1、安装sqlsugar。在models下的依赖项那右击选择管理Nuget程序包,输入sqlsugarcore(因为我们用的是netcore,而不是net famework所以也对应sqlsugarcore),出来的第一个就是了,然后点击选择版本,一…

stm32开发之threadx之modulex模块文件的生成脚本项目

前言 为了保证在window上运行,且体积小的问题,所以采用c语言编写生成脚本,将相关路径由json文件进行配置,使用了一个cjson库进行解析项目构建使用的是cmake 项目代码 CMakeLists文件 cmake_minimum_required(VERSION 3.27) project(txm_bat_script C…

MindOpt APL向量化建模语法的介绍与应用(2)

前言 在数据科学、工程优化和其他科学计算领域中,向量和矩阵的运算是核心组成部分。MAPL作为一种数学规划语言,为这些领域的专业人员提供了强大的工具,通过向量式和矩阵式变量声明以及丰富的内置数学运算支持,大大简化了数学建模…

通过实例学C#之ArrayList

介绍 ArrayList对象可以容纳若干个具有相同类型的对象,那有人说,这和数组有什么区别呢。其区别大概可以分为以下几点: 1.数组效率较高,但其容量固定,而且没办法动态改变。 2.ArrayList容量可以动态增长,但…

Go栈内存管理源码解读

基本介绍 栈内存一般是由Go编译器自动分配和释放,其中存储着函数的入参和局部变量,这些参数和变量随着函数调用而创建,当调用结束后也会随之被回收。通常开发者不需要关注内存是分配在堆上还是栈上,这部分由编译器在编译阶段通过…

Day92:系统攻防-WindowsLinux远程探针本地自检任意执行权限提升入口点

目录 操作系统-远程漏扫-Nessus&Nexpose&Goby Nessus Nexpose 知识点: 1、远程漏扫-Nessus&Nexpose&Goby 2、本地漏扫-Wesng&Tiquan&Suggester 3、利用场景-远程利用&本地利用&利用条件 操作系统-远程漏扫-Nessus&Nexpose&a…

C语言(一维数组)

Hi~!这里是奋斗的小羊,很荣幸各位能阅读我的文章,诚请评论指点,关注收藏,欢迎欢迎~~ 💥个人主页:小羊在奋斗 💥所属专栏:C语言 本系列文章为个人学习笔记&#x…

鸿蒙TypeScript学习21天:【声明文件】

TypeScript 作为 JavaScript 的超集,在开发过程中不可避免要引用其他第三方的 JavaScript 的库。虽然通过直接引用可以调用库的类和方法,但是却无法使用TypeScript 诸如类型检查等特性功能。为了解决这个问题,需要将这些库里的函数和方法体去…

将本地项目上传到Github

首先安装git、创建github账号 1、创建一个新的仓库 2、创建SSH KEY。先看一下你C盘用户目录下有没有.ssh目录,有的话看下里面有没有id_rsa和id_rsa.pub这两个文件,有就跳到下一步,没有就通过下面命令创建。 ssh-keygen -t rsa -C "you…

微信小程序echart图片不显示 问题解决

目录 1.问题描述:2.解决方法:2.1第一步2.2第二步2.2效果 小结: 1.问题描述: echart图片不显示 图片: 2.解决方法: 2.1第一步 给wxml中的ec-canvas组件添加宽高样式:style"width: 100%…

Docker容器tomcat中文名文件404错误不一定是URIEncoding,有可能是LANG=zh_CN.UTF-8引起

使用Docker部署tomcat,出现中文名文件无法读取,访问就是404错误。在网上搜索一通,都说是在tomcat的配置文件server.xml中修改一下URIEncoding为utf-8就行,但是我怎么测试都不行。最终发现,是Docker启动时,传…

【经典算法】LeetCode 64. 最小路径和(Java/C/Python3/Golang实现含注释说明,Easy)

作者主页: 🔗进朱者赤的博客 精选专栏:🔗经典算法 作者简介:阿里非典型程序员一枚 ,记录在大厂的打怪升级之路。 一起学习Java、大数据、数据结构算法(公众号同名) ❤️觉得文章还…

java文件夹文件比较工具

import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.HashSet; import java.util.Set;public class FolderFileNames {public static void main(String[] args) {// 假设您要读取的文件夹路径是 &q…

代码随想录-算法训练营day12【休息,复习与总结】

代码随想录-035期-算法训练营【博客笔记汇总表】-CSDN博客 ● day 12 周日休息(4.14) 目录 复习与总结 0417_图论-太平洋大西洋水流问题 0827_图论-最大人工岛 复习与总结 二刷做题速度提升了一大截,ヾ(◍∇◍)ノ゙加…