游标存储过程视图标值

oracle pl/sql 测试题 oracle基础 阅读详情
CREATE TABLE STUDENT
(	
	SID INT PRIMARY KEY IDENTITY,
	SNAME NVARCHAR(50),
	SAGE DATETIME,
	SSEX CHAR(4)
)
CREATE TABLE TEACHER
(
	TID INT PRIMARY KEY IDENTITY,
	TNAME NVARCHAR(50)
)
CREATE TABLE COURSE
(
	CID INT PRIMARY KEY IDENTITY,
	CNAME NVARCHAR(50),
	TID INT FOREIGN KEY REFERENCES TEACHER(TID)
)
CREATE TABLE SCORE
(
	ID INT PRIMARY KEY IDENTITY,
	SID INT FOREIGN KEY REFERENCES STUDENT(SID),
	CID INT FOREIGN KEY REFERENCES COURSE(CID),
	SCORES INT
)

–创建存储过程,为学生表插入数据

GO
CREATE PROC P_INSERTSTU
@SNAME NVARCHAR(50),
@SAGE DATETIME,
@SSEX CHAR(4)
AS
BEGIN
	INSERT INTO STUDENT VALUES(@SNAME,@SAGE,@Ssex)
END

–创建触发器,删除学生信息,删除后打印出‘警告:XX同学已被删除,请知晓!’

GO
CREATE TRIGGER T_DELETESTU
ON STUDENT
AFTER DELETE
AS
BEGIN
	DECLARE @STUNAME NVARCHAR(50)
	DELETE STUDENT WHERE SID IN (SELECT SID FROM DELETED)
	SELECT @STUNAME =SNAME FROM DELETED
	PRINT '警告:'+@STUNAME+'同学已被删除,请知晓!'
END

–创建触发器,修改学生信息,修改后打印出‘警告:XX同学已被修改为XX,请知晓!’

GO
CREATE TRIGGER T_UPDATESTU
ON STUDENT
AFTER UPDATE
AS
BEGIN
	DECLARE @STUNAMEUB NVARCHAR(50)
	DECLARE @STUNAMEUA NVARCHAR(50)
	SELECT @STUNAMEUA =SNAME FROM INSERTED
	SELECT @STUNAMEUB = SNAME FROM DELETED
	PRINT '警告:'+@STUNAMEUB+'同学已被修改为'+@STUNAMEUA+',请知晓!'
END

–创建一个标值函数,参数是SCORES 返回是为NVARCHAR(50)类型,在函数中使用CASE WHEN THEN END 为成绩划分等级>60 ‘不及格’ >70 ‘及格’>80‘中等’>100‘优秀’=100‘满意’

GO
CREATE FUNCTION FUN_RANK(@SCORES INT)
RETURNS NVARCHAR(50)
AS
BEGIN
	DECLARE @RESTUCH NVARCHAR(50)
	SELECT @RESTUCH =
	(CASE WHEN @SCORES < 60 THEN '不及格',
		    WHEN @SCORES < 70 THEN '及格',
		    WHEN @SCORES < 80 THEN '中等,
		    WHEN @SCORES < 100 THEN '优秀',
		    WHEN @SCORES = 100 THEN '满意,
	)
	RETURN @RESTUCH
END

–创建一个视图,显示学生编号,学生姓名,课程名称,任课老师,以及调用标值函数为成绩划分等级

GO
CREATE VIEW V_STUDENT
AS
SELECT S.SID,S.SNAME,C.CNAME,T.TNAME,R.SCORES,DBO.FUN_RANK(R.SCORES) AS RANKS FROM STUDENT S JOIN SCORE R ON S.SID= R.SID JOIN COURSE C ON R.CID= C.CID JOIN TEACHER T ON T.TID = C.TID
GO

–使用行转列对成绩表重新划分

SELECT 
SID,
MAX(CASE WHEN CID = 1 THEN SCORES ELSE NULL END) '语文',
MAX(CASE WHEN CID = 2 THEN SCORES ELSE NULL END) '数学',
MAX(CASE WHEN CID = 3 THEN SCORES ELSE NULL END) '英语',
 FROM SCORE GROUP BY SID

–创建一个存储过程对成绩分页 ,输出总记录数

GO
CREATE PROC P_PAGESTU
@STUNAME NVARCHAR(20),
@PAGEINDEX INT,
@PAGESIZE INT,
@PAGECOUNT INT OUTPUT
AS
BEGIN 
	SELECT * FROM (
	SELECT R.SCORES,ROW_NUMBER() OVER(ORDER BY S.SID) AS NUM FROM STUDENT S JOIN SCORE R ON S.SID = R.SID WHERE S.SNAME LIKE '%'+@STUNAME+'%') TEMP WHERE TEMP.NUM BETWEEN ((@PAGEINDEX-1)*@PAGESIZE+1) AND (@PAGEINDEX*@PAGESIZE)
	SELECT @PAGECOUNT=COUNT(S.SID) FROM STUDENT S JOIN SCORE R ON S.SID = R.SID WHERE S.SNAME LIKE '%'+@STUNAME+'%' 
	)
END

–创建一个游标,正确读取学生的姓名即成绩

DECLARE CURSOR_SCORE CURSOR SCROLL
FOR SELECT S.SNAME,R.SCORE FROM STUDENT S JOIN SCORE R ON S.SID= R.SID
OPEN CURSOR_SCORE
DECLARE @STUNAME NVARCHAR(20)
DECLARE @STUSCOR INT
FETCH FIRST FROM CURSOR_SCORE INTO @STUNAME,@STUCORE
WHILE @@FETCH_STATUS =0
BEGIN
	SELECT @STUNAME=S.SNAME,@STUSCORE = R.SCORES FROM STUDENT S JOIN SCORE R ON S.SID = R.SID 
	FETCH NEXT FROM CURSOR_SCORE INTO @STUNAME,@STUSCORE
END
PRINT @STUNAME +成绩+CONVERT(NVARCHAR(20),@STUSCORE)
CLOSE CURSOR_SCORE
DEALLOCATE CURSOR_SCORE
(4)数仓建设-数据仓库命名规则 目录 1.表属性规范-1 1.常规表 2.中间表 3.临时表 4.维度表 5.手工表 6.指标 2.表属性规范-2 1.ODS层表名  2.DW事实表表名 3.DW/DM维度表表名 4.元数据表名 3.其他数据库对象 1.表属性规范-1 1.常规表 常规表是我们需要固化的表,是正式使用的表,是目前一段时间内需要去维护去完善的表。 规范:分层前缀[dwd|dws|ads|bi]_业务域_主题域_XXX_粒度。 业务域、主题域我们都可以用词根的方式枚举清楚,不断完善,粒度也. 阅读详情

相关推荐

SQL Server分页性能优化:告别ROW_NUMBER()全排序陷阱

分页是数据库最常见也最易被低估的性能瓶颈。其本质是数据集上的有序游标访问,核心原理在于避免全量排序与无效数据丢弃。传统ROW_NUMBER()分页因强制全集编号和确定性排序,在SQL Server中极易引发TempDB暴涨、内存压力、结果漂移等连锁风险;而OFFSET/FETCH或键集分页通过游标驱动、索引流式扫描,显著降低I/O与CPU开销。技术价值体现在高并发下响应恒定、锁持有时间缩短、统计信息鲁棒性增强。典型应用于BI报表、订单中心、日志查询等需深度翻页的OLTP/HTAP场景。本文聚焦SQL Ser

as2886089的博客 494

ORACLE——存储过程

  存储过程procedure   被内容来自《oracle从入门到精通——明日科技》一书   存储过程是一种命名的PL/SQL程序快,存储过程被保存在数据库中,它不可以被SQL语句直接执行或调用,只能通过EXECUT命令执行或在PL/SQL程序快中内部调用。由于存储过程是已经编译好的代码,所以在被调用或引用时,其执行效率非常高。本次所有操作均在Oracle 18c本版。 1.创建存储过程 ...

weixin_30561177的博客 752

Oracle笔记

一、oracle数据结构 二、数据类型 1. 字符型 (1) CHAR : 固定长度的字符类型,最多存储 2000 个字节 (2) VARCHAR2 :可变长度的字符类型,最多存储 4000 个字节 (3) LONG : 大文本类型。 最大可以存储 2 个 G 2、数值型 NUMBER : 数值类型 例如: NUMBER(5) 最大可以存的数为 99999 NUMBER(5,2) 最大可以存的数...

csweldn520的专栏 427

MySQL 存储过程,语法+示例,超详细!!

MySQL 存储过程,语法+示例,超详细!!

m0_62951223的博客 2760

分析方法—temporal receptive field(TRF)

总结来说,时间感受野其实就是一个 filter!课程中的描述—.(使用时间感受野与刺激进行卷积来描述)时间感受野一般是听觉计算中使用的,在视觉中,有另一种分析叫做空间感受野(spatial receptive fields)。回归权重(Regression weights)是指在回归分析中用于估计自变量与因变量之间关系的权重或系数。回归分析是一种统计方法,用于建立自变量与因变量之间的关联模型,并通过拟合数据来估计模型中的参数。在简单线性回归中,只有一个自变量与一个因变量之间的关系被建模。

m0_51474171的博客 1602

YOLOv8冻结层的迁移学习 全网首发

在调用时会创建trainer此时的模型配置更新了,冻结了个p。

qq_42693842的博客 6586

触发器与游标练习

--班级表 create table Class ( class_id int primary key identity, class_name varchar(50) ,--班级名称 class_count int --班级数量 ) insert into Class VALUES('08A',1),('08B',1),('08C',1) --学生表 create table student (...

ProteaCynaroides的博客 417

手把手教你用示波器实测CAN总线波形:快速区分高速、低速及常见故障

本文详细介绍了如何使用示波器实测CAN总线波形,快速区分高速CAN总线和低速CAN总线,并诊断常见故障。通过实战案例和波形分析,帮助工程师掌握CAN总线信号特征,提升故障排查效率,适用于汽车电子和工业控制领域。

weixin_33217202的博客 409

mybatis 调用oracle存储过程,传参、返回游标的值获取--示例

1,dao层代码 Map map = new HashMap(); map.put("zsxxdm", zsxxdm); map.put("students", students); map.put("currentlq_fsx", Integer.parseInt(lqfsx)); getSqlSession().selectList("lqMapper.sglq",

wolongsuxing的专栏 3438

MobileNet V3 图像分类

MobileNet V3

Henry的博客 1768

智能车竞赛疯狂电路组:Altium Designer赛道设计与计分策略全解析

本文全面解析智能车竞赛疯狂电路组中,如何利用Altium Designer进行专业赛道设计。从软件基础操作、图层管理与封装库调用,到赛道拓扑绘制、核心尺寸规范,详细拆解设计全流程。文章深入结合计分策略,指导如何在设计阶段植入策略点,优化路径与元器件布局,以在比赛中获得时间优势,并提供了从图纸输出到实地测试的完整避坑指南。

beta5的博客 584

存储过程、事务、游标的使用

存储过程: 语法结构 create procedure pro_name -- 参数1 类型 -- ... ... -- 参数n 类型 output --返回参数 as begin --过程代码 end go 传参,接收返回值方式 create procedure colo2 @iret int output -- 返回参数 as begin declare @var varchar(10) set @var = 'A' select @iret =

qq_36950604的博客 207

《UE4游戏开发》之 《音效系统的实现》

音效系统需要负责管理什么事情: 1.1 确定声音控制的分类:如背景音乐、技能音效、界面音效、角色配音等,不同游戏对声音有不同的分类 1.2 控制每个分类的声音的开启与关闭,以及调节每个分类声音的大小 解决如何分类: 2.1 首先需要知道ue4为声音分类提供了什么:SoundClass通常需要一个根分类【SC_RPG_Master】,便于总体控制音效,以及指定引擎默认启动的音效 打开SoundClass资产【SC_RPG_Master】,对根控制的设置,将逐级传递并按比例进行设置,以此达到控制一类声音的目的.

qq_21919621的博客 2126

Oracle存储过程及游标基本语法

什么是存储过程 存储过程是经过编译并存储在数据库中的一段SQL语句的集合。 存储过程的优缺点 优点 1、运行速度:对于很简单的sql,存储过程没有什么优势。对于复杂的业务逻辑,因为在存储过程创建的时候,数据库已经对其进行了一次解析和优化。存储过程一旦执行,在内存中就会保留一份这个存储过程,这样下次再执行同样的存储过程时,可以从内存中直接调用,所以执行速度会比普通sql快。 2、可维护性:存储过程有些时候比程序更容易维护,这是因为可以实时更新DB端的存储过程。 有些bug,直接改存储过程里的业务逻辑,就可以

Horsleyli的博客 734

代数拓扑与AI架构:AI应用架构师深入探索数学研究如何分析复杂系统的结构特性

随着人工智能技术的飞速发展,AI系统变得越来越复杂。AI应用架构师需要有效的工具和方法来理解、设计和优化这些复杂系统。代数拓扑作为数学的一个分支,提供了独特的视角和技术来分析复杂系统的结构特性。本文旨在帮助AI应用架构师深入了解代数拓扑,以及如何将其应用于AI架构设计中,提升对复杂系统的分析能力。首先,我们会介绍代数拓扑和AI架构相关的核心概念及其联系,通过有趣的故事引入主题,让读者轻松理解复杂概念。接着,深入探讨代数拓扑的核心算法原理,结合具体的编程语言代码示例详细阐述。

大模型应用工坊 670

风电功率预测项目技术白皮书:短期、超短期、中长期全尺度算法详解与工程落地

聚焦风电功率预测的时间尺度与算法:短期(0~72h)以XGBoost/LightGBM/CatBoost及深度学习为主,超短期(0~4h)采用ARMA+LSTM,中长期用LightGBM等,并涵盖概率预测、多气象源融合、AI大模型+物理模型混合策略、极端天气应对及工程运维要点。

算法工程师 323

SQL的综合案例(触发器、函数、游标、存储过程)

下面是一个学生信息的创建 在这里就不创建数据库了 CREATE TABLE CLASS ( class_id int IDENTITY PRIMARY KEY, --班级ID class_name Varchar(50), --班级名称 class_studentCount Int --班级的学生数量 ) GO CREATE TABLE ...

Writing_the_future的博客 1903

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

MYSQL学习笔记:关于MySQL游标(5)

MySQL游标 1.什么是游标? 游标(cursor)是一个存储在MySQL服务器上的数据库查询,它并不是一条SELECT语句,而是被该语句检索出来的结果集。 使用游标也可以轻易的取出在检索出来的行中前进或后退一行或多行的结果,也可以遍历返回的多行结果。 2.游标的使用 定义游标 CREATE PROCEDURE 函数名() BEGIN DECLARE 游标名 CURSOR FOR SELECT语句; END; 打开和关闭游标 OPEN 游标名; --打开 CLOSE 游标名;-

qq_42653576的博客 336

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

oracle写sql语句游标,甲骨文 Oracle性能优化 之 游标及SQL <一>

1 游标我们要先说一下游标这个概念。从Oracle数据库管理员的角度上说,游标是对存储在库缓存中的可执行对象的统称。SQL语句是存储在库缓存中的,它是游标。除了它之外,还有Oracle的存储过程也是存储在库缓存中的可执行对象,从OracleDBA的角度上说,它也是游标。Oracle也把它算为游标,在某些和游标相关的视图中,也会显示存储过程的一些信息的。但从开发者的角度说,只有SQL语句才是...

weixin_36301639的博客 199

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Oracle 简单知识应用,涉及序列、触发器、游标、存储过程、函数等

/* 创建序列*/--1.用户序列create sequence user_seqincrement by 1minvalue 1start with 1maxvalue 9999;--初始值从1开始,每次跳跃区间值为1,最大值为9999/* 触发器*/--1.1.添加用户时的触发器create or replace trigger add_user_tribefo...

weixin_34208185的博客 117

Mysql的基本用法

1、修改自定义函数访问权限的方式 update mysql.proc set security_type='INVOKER' where db='数据库名' and name='自定义函数名';

Michean的博客 277

数据库编程_3(存储过程,触发器)

如果存储过程的参数作为一个集合,则该输出参数不在存储过程的参数中声明,而是在存储过程中创建一个临时表来存储该集合值。该存储过程可以直接在服务器端运行,也可以在客户端远程调用运行,远程调用时存储过程还是在服务器运行。//逐行显示同学的姓名,课程名,成绩。本例中使用游标是因为,学生的成绩不止一门,所以需要游标了遍历输出,如果只有一个单一的数据,可以不使用有游标,直接用变量代替即可。输入某同学的学号,使用游标统计该同学的平均分,并返回平均分,同时逐行的显示该同学的姓名,选课名称和选课成绩。//继续获取游标的值。

weixin_62903630的博客 905

【Oracle】常用命令汇总

【Oracle】常用命令汇总

qq_46393403的博客 1075

Oracle数据库内存配置:从SGA/PGA原理到实战调优指南

数据库内存管理是保障系统性能的核心基础,其原理在于通过高效的内存结构减少物理I/O,从而提升数据处理速度。在Oracle数据库中,这一技术价值主要体现在SGA(系统全局区)和PGA(程序全局区)的协同工作上:SGA作为共享缓存区,负责缓冲数据块和SQL执行计划;PGA则为私有会话提供排序、哈希等操作空间。理解内存架构与自动管理机制,对于优化OLTP事务处理、解决高并发场景下的性能瓶颈至关重要。本文聚焦于Oracle DBA的日常运维实战,详细解析如何查看与调整内存参数,并针对常见的库缓存竞争、内存不足等性能

weixin_34332905的博客 401
上一篇: SQL的综合案例(触发器、函数、游标、存储过程)
下一篇: WebService相关的
Writing_the_future
博客等级 码龄8年 8粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值