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

待续、更新中

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SublimeText4 安装

Sublime Text 可以编写html&#xff0c;css&#xff0c;js&#xff0c;php等等&#xff0c;是一个轻量、简洁、高效、跨平台的编辑器。 图1&#xff1a;SublimeText官网 Sublime Text具有漂亮的用户界面和强大的功能&#xff0c;例如代码缩略图&#xff0c;Python的插件&#…

Java学习记录(十九)多线程(一)

线程 线程是操作系统能进行调度的最小单位&#xff0c;他是被包含在进程中的&#xff0c;一个运行的软件可以看作为一个进程&#xff0c;而在该软件中执行的各种功能自身可以理解为一个线程&#xff0c;可以理解为在软件中互相独立又可以同时进行的功能&#xff0c;他是进程中…

js视频上传的方法

一、视频上传于图片上传类似他们的上传方法一样。路径不同标签不同&#xff1b; 二、直接上效果 三、直接上代码 // // 上传图片 let urls "https://wwz.jingyi.icu/"; let a $("form img") // console.log(a);function fl() {let read document.getE…

计算机网络面经八股-解释一下HTTP长连接和短连接?

在HTTP/1.0中&#xff0c;默认使用的是短连接。也就是说&#xff0c;浏览器和服务器每进行一次HTTP操作&#xff0c;就建立一次连接&#xff0c;但任务结束就中断连接。如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源&#xff0c;如JavaScript文件、图…

探索制氮机在农产品保鲜中的应用方式

在现代生活中&#xff0c;农产品保鲜成为老生常谈的话题&#xff0c;水果数次厂商总是在为如何使水果蔬菜能够保存时间长一点而发愁&#xff0c;而制氮机的出现则解决了这一难题&#xff0c;为农产品保鲜技术带来了革命性的变革。本期恒业通小编和您一起了解制氮机在水果,蔬菜保…

k8s+wordpress+zabbix+elastic+filebeat+kibana服务搭建以及测试

一&#xff0c;环境&#xff1a;docker&#xff0c;k8s&#xff0c;zabbix&#xff0c;以及搭建worpdress&#xff0c;elasticsearch&#xff0c;filebeat&#xff0c;kibana 二&#xff0c;主机分配&#xff1a; 名称host详述个人博客3192.168.142.133 搭配mysql8.0.36的数据…

ubuntu安装并使用Anaconda

0、说明 对应着 Python 有 2.x 版本和 3.x 版本&#xff0c;Anaconda 也有 Anaconda2 以及 Anaconda 3 两个版本&#xff0c;考虑其流行度&#xff0c;一般谈及 Anaconda 时&#xff0c;默认为 Anaconda3。本人使用的ubuntu20.04。 1、Anaconda 简介 Anaconda 是一个用于科学…

【大模型API调用初尝试二】星火认知大模型 百度千帆大模型

大模型API调用初尝试二 科大讯飞—星火认知大模型单论会话调用多轮会话调用 百度—千帆大模型获取access_token单轮会话多轮会话 科大讯飞—星火认知大模型 星火认知大模型是科大讯飞开发的&#xff0c;直接使用可以点击星火认知大模型&#xff0c;要调用API的话在讯飞开发平台…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的交通信号灯识别系统(深度学习+UI界面+训练数据集+Python代码)

摘要&#xff1a;本研究详细介绍了一种采用深度学习技术的交通信号灯识别系统&#xff0c;该系统集成了最新的YOLOv8算法&#xff0c;并与YOLOv7、YOLOv6、YOLOv5等早期算法进行了性能评估对比。该系统能够在各种媒介——包括图像、视频文件、实时视频流及批量文件中——准确地…

Xilinx 7系列FPGA的配置流程

目录 1.4配置流程 1.4.1 设备上电 ​编辑1.4.2 清除配置寄存器 1.4.3 采样模式引脚 1.4.4 同步 ​编辑1.4.5 检测设备ID ​编辑1.4.6 加载配置数据 1.4.7 CRC校验 1.4.8 启动序列 1.4配置流程 对于所有配置模式&#xff0c;7系列的基本配置流程都是相同的&…

算法练习:二分查找

目录 1. 朴素二分查找2. 在排序数组中查找元素的第一个和最后一个位置3. 搜索插入位置4. x的平方根5. 山脉数组的峰值索引6. 寻找峰值7. 寻找旋转排序数组中的最小值8. 点名 1. 朴素二分查找 题目信息&#xff1a; 题目链接&#xff1a; 二分查找二分查找的使用前提为数据具有&…

leetcode精选算法刷题训练篇 之 链表OJ(包含题目链接以及详细讲解)

好好学习&#xff0c;giao哥给你补&#x1f95a; 1、移除链表元素 难度等级&#xff1a;⭐ 题目链接&#xff1a;移除链表元素 2、链表的中间节点 难度等级&#xff1a;⭐⭐ 题目链接&#xff1a;链表的中间节点 3、反转链表 难度等级&#xff1a;⭐⭐⭐ 题目链接&#x…

C#版开源免费的Bouncy Castle密码库

前言 今天大姚给大家分享一款C#版开源、免费的Bouncy Castle密码库&#xff1a;BouncyCastle。 项目介绍 BouncyCastle是一款C#版开源、免费的Bouncy Castle密码库&#xff0c;开发人员可以通过该项目在他们的 C# 应用程序中使用 Bouncy Castle 提供的各种密码学功能&#x…

git提交代码描述时如何换行(更新时间24/3/12)

问题复现&#xff08;信心满满使用转义字符换行&#xff09; 解决方法&#xff1a; 写多个-m字符串的结构可以实现自动换行 注意空格 git commit -m"第一行描述" -m"第二行描述" 效果演示&#xff1a;&#xff08;强迫症福利&#xff09;

近700所高校,2024年预算出炉!

办学经费&#xff0c;是高校发展的核心与基石。学校人才培养、科学研究等各项事业的开展&#xff0c;都有赖于教育经费的支持。 近日&#xff0c;全国已有北京、上海、江苏、浙江等20多个省&#xff08;市、自治区&#xff09;的高校对外公布了2024年预算经费&#xff0c;小编…

L2-035 完全二叉树的层序遍历(Python)

L2-035 完全二叉树的层序遍历 分数 25 全屏浏览 切换布局 作者 陈越 单位 浙江大学 一个二叉树&#xff0c;如果每一个层的结点数都达到最大值&#xff0c;则这个二叉树就是完美二叉树。对于深度为 D 的&#xff0c;有 N 个结点的二叉树&#xff0c;若其结点对应于相同深度…

深入联合文件系统

Union File System&#xff08;联合文件系统&#xff0c;UnionFS&#xff09;是一种轻量级的高性能分层文件系统&#xff0c;它支持将文件系统中的修改信息作为一次提交&#xff0c;并层层叠加&#xff0c;同时可以将不同目录挂载到同一个虚拟文件系统下&#xff0c;应用看到的…

C# 8.0+版本项目 string不可为空

1.在某一次新建项目的时候发现&#xff0c;新建的项目&#xff0c;写的测试接口&#xff0c;接口的入参有string的参数&#xff0c; 但是调用接口的时候string的参数没有传报了400&#xff0c;很奇怪&#xff0c;也没有语法错误之类的。 2.解决办法 在项目上右键->属性->…

计算机毕业设计-springboot+vue前后端分离电竞社交平台管理系统部分成果分享

4.5系统结构设计 本系统使用的角色主要有系统管理员、顾客、接单员&#xff0c;本系统为后台管理系统&#xff0c;游客用户可以经过账号注册&#xff0c;管理员审核通过后&#xff0c;用账号密码登录系统&#xff0c;查看后台首页&#xff0c;模块管理&#xff08;顾客信息&am…

Covalent Network (CQT) 通过统一 API 集成,为 Gnosis Chain 的 AI 潜力赋能

作为一个为超 225 个链提供服务的领先多链索引器&#xff0c;Covalent Network (CQT) 正在与知名的 EVM 区块链基础设施提供者 Gnosis Chain 展开一项激动人心的合作。这一战略合作象征着先进的实时数据索引技术的集成&#xff0c;包括 Covalent Network (CQT) 的统一 API 和 G…