SQL: 触发器/存储过程/游标的操作

目录

  • 触发器
  • 存储过程
    • 创建存储过程
    • 修改存储过程
    • 删除存储过程
    • 执行存储过程
  • 游标
  • 待续、更新中

触发器

待更新

存储过程

定义

是一组TSQL语句的预编译集合,能实现特定的功能
是一种独立的数据库对象,在服务器上创建和运行
类似于编程语言中的过程或函数

分类

系统存储过程:
是指由SQL Server提供的存储过程,可以作为命令执行
它定义在系统数据库master中
前缀: sp_用户存储过程
是由用户在当前数据库中创建的存储过程
最好不要以sp 开头, 若用户定义的存储过程与系统存储过程同名,用户定义的存储过程永远不会执行

变量

局部变量:用户自己定义的变量,用于在语句之间传递数据
局部变量名以@符号开头
全局变量名以@@符号开头注意:局部变量未被赋值之前,其值为u川

定义变量

一个整型变量和两个字符型变量
declare  @name varchar(10)
declare @age smallint, @msg  varchar(50)

赋值

局部变量的赋值
set  @变量=表达式
select   @变量=表达式注意: 
select语句不能同时完成赋值和查询两种操作区别:
set @变量=表达式 用于将表达式的值直接赋给变量
select @变量=表达式 用于从查询结果中选择某一列或表达式的值赋给变量

局部变量的显示

print   表达式   ( 注意: 必须是char、varchar;或可以隐式地 转化成字符型的常量或变量表达式)
select  表达式例子:
显示@age、@name的值
print   @name
print   @age
select  @name as 姓名,@age 年龄

DECLARE @counter int;
SELECT  @counter=0 ;
WHILE  @counter<10   --WHILE 循环
BEGIN   --循环体开始
SELECT @counter=@counter+1
PRINT  @counter
end    --循环体结束

流程控制语句概述:

begin..end语句   //语句块
if...else语句
while、break和continue语句
goto     //转移语句
return语句   
waitfor语句

创建存储过程

  1. 格式:

    create proc p1 – p1为存储过程名
    as
    sql 语句
    go
    exec p1 – 执行存储过程

例:

/*
创建1个简单的存储过程p1 ,查询所有学生的学号,
姓名、课程号和成绩信息,并按成绩降序排列
*/create  procedure p1
as
select Student.Sno,  Sname ,Cno, Grade
from Student,SC
where Student.Sno=SC.Sno
order by Sno desc
go
exec  p1  
  1. 带参数格式:

    create proc 为存储过程名
    @形参 数据类型[=默认值],…
    as
    SQL语句

执行格式:

exec  存储过程名
[@实参=]值,.....n

例如:
创建1个带有输入参数的存储过程p2,查询指定课程号(作为输入参数)的学生成绩信息

create proc p2
@kch char(4)='1'   ----有默认值的输入形参:接收外部传递的数据
as
select  *  from Sc where Cno=@kch
go 
exec  p2  --(1)使用默认值执行存储过程
exec p2  '2'  ---(2)按位置传递参数 (输入实参:将数据传递给存储过程)
exec  p2 @kch='3'   --(3)通过参数名传递参数  (输入实参:将数据传递给存储过程)
  1. 使用输出参数

创建格式:
带[ ] 内容为可选内容,即 可写可不写

create proc[edure]   存储过程名
@形参  数据类型   output,...n    ( 输出形参:将数据返回给调用它的程序 )
as
SQL语句

执行格式:

exec[ute]  存储过程名
@实参   output ,...n  ( 输出实参:接收从存储过程返回的数据  ) 

说明:

输出实参和输出形参的名字可以相同,也可以不同
使用时,要先声明接收返回值的输出实参变量
·

例:

-- 创建1个带有输入参数和输出的存储过程p4,返回指定教师(作为输入参数) 所授课程的课程号(作为输出参数)
create proc p4
@Sname varchar(20),@Sno char(9) output
as
select @Sno=Sno  from Student where Sname=@Sname
go
declare @Sname varchar(20),@Sno char(9)
set @Sname='李勇'
exec p4 @Sname,@Sno output
print @Sname+ '学号为: '+ @Sno

修改存储过程

在这里插入图片描述

删除存储过程

在这里插入图片描述

执行存储过程

-- 执行存储过程
EXEC p1_存储过程;-- 执行带参数的存储过程
EXEC p1_存储过程 @参数名 = 参数值;

游标

游标,一个执行结果的数据缓冲区

解决java 等编程语言一句一句执行命令 
与
sql 语言执行多条命令
之间不匹配进行解决该问题

使用游标

声明游标
declare cursor_name打开游标
open cursor_name提取数据
fetch ** from cursor_name into 变量
@@fetch_status,返回针对连接当前打开的任何游标发出的上一条游标 fetch语句的状态0  fetch语句成功
-1  fetch语句失败或行不在结果集中
-2  提取的行不存在关闭游标
close cursor_name
删除游标资源,释放内存: deallocate  cursor_name

待续、更新中

 
 
—————————————————————
以上就是今日博客的全部内容了
创作不易,若对您有帮助,可否点赞、关注一二呢,感谢支持

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

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

相关文章

Redis精讲

redis持久化 RDB方式 Redis Database Backup file (redis数据备份文件), 也被叫做redis数据快照. 简单来说就是把内存中的所有数据记录到磁盘中. 快照文件称为RDB文件, 默认是保存在当前运行目录. [rootcentos-zyw ~]# docker exec -it redis redis-cli 127.0.0.1:6379> sav…

开源的python 游戏开发库介绍

本文将为您详细讲解开源的 Python 游戏开发库&#xff0c;以及它们的特点、区别和应用场景。Python 社区提供了多种游戏开发库&#xff0c;这些库可以帮助您在 Python 应用程序中实现游戏逻辑、图形渲染、声音处理等功能。 1. Pygame 特点 - 基于 Python 的游戏开发库。…

算法(6种思想、7种查找)、与数据结构(数组/链表/栈与队列/树)整理总结

算法 除了这里提到的算法思想和查找算法&#xff0c;算法还有别的类型&#xff1a; 排序算法&#xff1a; 对一组元素进行排序的算法。常见的排序算法包括冒泡排序、快速排序、归并排序等。 图算法&#xff1a; 解决图结构相关问题的算法&#xff0c;例如最短路径问题、最小…

Docker容器Docker桌面配置镜像加速

打开Docker Desktop应用程序&#xff0c;点击设置 具体配置如下&#xff1a; {"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental": false,"features": {"buil…

编译Linux内核并修改版本号后缀为学号-Ubuntu22.04中编译安装Linux内核6.7.8

前言&#xff1a;实验课要求下载最新版本Linux内核并修改版本号&#xff0c;本人在Vmware中Ubuntu22.04中实现&#xff0c;花三天时间查阅大量网站资料。记录一下误打误撞成功的过程&#xff0c;希望对你们有帮助。 目录 一、常规安装步骤&猜想Ubuntu与gcc版本过低 二、安…

202003 青少年软件编程(Scratch)等级考试试卷(一级)

202003 青少年软件编程&#xff08;Scratch&#xff09;等级考试试卷&#xff08;一级&#xff09; 第1题&#xff1a;【 单选题】 在Scratch中&#xff0c;以下哪个区域可以展示编程效果&#xff1f; A:代码区 B:舞台区 C:角色区 D:积木区 【正确答案】: B 【试题解析】…

基于PySide2实现调用本地摄像头抓拍并保存照片(Python版本)

因为横向课题需要&#xff0c;这是其中的一个小小的功能&#xff0c;单独拎出来作为一个小demo&#xff0c;方便后续学习使用 项目实现功能&#xff1a; 点击open按钮&#xff0c;摄像头开启&#xff0c;实时捕获周围图像并显示 点击capture按钮&#xff0c;保存摄像头照片&am…

日期工具的逻辑与数据请求函数的完善

src\libs\utils.js 获取当前日期格式 /*** 获取当前日期格式* param {*} field * returns */ function getNowDate(field) {const date new Date()let year date.getFullYear(),month date.getMonth() 1,day date.getDate()switch (field) {case day:return ${year}-${mo…

02- 使用Docker安装RabbitMQ

使用Docker安装RabbitMQ 下载安装镜像 方式一: 启动docker服务,然后在线拉取 # 在线拉取镜像 docker pull rabbitmq:3-management# 使用docker images查看是否已经成功拉取方式二: 从本地加载 ,将RabbitMQ上传到虚拟机中后使用命令加载镜像即可 docker load -i mq.tar启动M…

LLM实施的五个阶段

原文地址&#xff1a;Five Stages Of LLM Implementation 大型语言模型显着提高了对话式人工智能系统的能力&#xff0c;实现了更自然和上下文感知的交互。这导致各个行业越来越多地采用人工智能驱动的聊天机器人和虚拟助手。 2024 年 2 月 20 日 介绍 从LLMs的市场采用情况可以…

LabelImg:一个简单易用的图像标注工具

目录 LabelImg是什么&#xff1f; 如何使用LabelImg进行图像标注&#xff1f; LabelImg的优势和应用场景 在哪里下载它 随着人工智能技术的不断发展&#xff0c;机器学习和深度学习在图像识别、目标检测等领域中得到了广泛的应用。而要训练一个有效的模型&#xff0c;通常需…

Vue3+ts(day02:CompositionAPI、setup)

学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/frontlearningNotes 觉得有帮助的同学&#xff0c;可以点心心支持一下哈&#xff08;笔记是根据b站上学习的尚硅谷的前端视频【张天禹老师】&#xff0c;记录一下学习笔记&#xff0c;用于自己复盘&#xff0c;有需要学…

备忘录怎么导出数据 备忘录数据导出方法

在忙碌的生活中&#xff0c;我时常依赖于备忘录来记录重要的信息&#xff0c;从工作截止日期到生活琐事&#xff0c;无一不靠它来帮我分担记忆的压力。但随着时间的推移&#xff0c;我发现有时候我不仅仅需要在软件内查看这些信息&#xff0c;还需要将它们导出&#xff0c;或许…

【数据库】软件测试之MySQL数据库练习题目

有表如下&#xff1a; Student 学生表 SC 成绩表 Course 课程表 Teacher 老师表 每个学生可以学习多门课程&#xff0c;每一个课程都有得分&#xff0c;每一门课程都有老师来教&#xff0c;一个老师可以教多个学生 1、查询姓‘朱’的学生名单 select * from Student whe…

【深度学习笔记】优化算法——Adam算法

Adam算法 &#x1f3f7;sec_adam 本章我们已经学习了许多有效优化的技术。 在本节讨论之前&#xff0c;我们先详细回顾一下这些技术&#xff1a; 在 :numref:sec_sgd中&#xff0c;我们学习了&#xff1a;随机梯度下降在解决优化问题时比梯度下降更有效。在 :numref:sec_min…

力扣--动态规划5.最长回文子串

class Solution { public:string longestPalindrome(string s) {// 获取输入字符串的长度int n s.size();// 如果字符串长度为1&#xff0c;直接返回原字符串&#xff0c;因为任何单个字符都是回文串if (n 1)return s;// 创建一个二维数组dp&#xff0c;用于记录子串是否为回…

React-路由小知识

1.默认路由 说明&#xff1a;当访问的是一级路由时&#xff0c;默认的二级路由组件可以得到渲染&#xff0c;只需要在二级路由的位置去掉path,设置index.属性为true。 2.404路由 说明&#xff1a;当浏览器输入ul的路径在整个路由配置中都找不到对应的pth,为了用户体验&#x…

《农商网》商业计划书(附模板下载)

在当今互联网高速发展的时代&#xff0c;农业与电子商务的结合成为了新的经济增长点。《农商网》商业计划书详细阐述了一个以大学生创业为核心的创新项目&#xff0c;旨在通过打造一个全新的农产品在线交易平台&#xff0c;实现农产品的高效流通和价值最大化。该计划书首先对市…

amv是什么文件格式?如何播放amv视频?

AMV文件格式源自于中国公司Actions Semiconductor&#xff0c;最初作为其MP4播放器中使用的专有视频格式。产生于数码媒体发展的需求下&#xff0c;AMV格式为小屏幕便携设备提供了一种高度压缩的视频存储方案。 AMV文件格式的主要特性与使用场景 AMV格式以其独特的特性在小尺寸…

【活动】探索人工智能的“迷惑瞬间”:真实体验与技术挑战

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 标题&#xff1a;探索人工智能的“迷惑瞬间”&#xff1a;真实体验与技术挑战引言…