【Sql Server】随机查询一条表记录,并重重温回顾下存储过程的封装和使用

大家好,我是全栈小5,欢迎来到《小5讲堂》。
这是《Sql Server》系列文章,每篇文章将以博主理解的角度展开讲解。
温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!

在这里插入图片描述

目录

  • 前言
  • 随机查询语句
  • 存储过程
    • 基本概念
    • 基本结构
    • 基础例子
    • 存储过程封装
  • 文章推荐

前言

温故而知新,最近在写sql查询语句,需求是随机查询表的其中一条记录。
基于这个查询,顺便把数据库自定义函数、存储过程这个两个知识点重温固定下。
因此,本篇文章将在随机查询一条表记录的基础上,把sql语句封装到存储过程里。

随机查询语句

要在SQL Server中随机生成一条记录,可以使用ORDER BY NEWID()来随机排序结果集,并使用TOP 1来限制结果集返回一条记录。
例如:

select top 1 * 
from(
    select 1 as id,'张三11' as nameValue union all select 2 as id,'张三22' as name union all 
    select 3 as id,'张三33' as nameValue union all select 4 as id,'张三44' as name union all
    select 5 as id,'张三55' as nameValue union all select 6 as id,'张三66' as name union all
    select 7 as id,'张三77' as nameValue union all select 8 as id,'张三88' as name
) a
order by newid()

select 1 as id,'张三11' as nameValue union all select 2 as id,'张三22' as name union all 
select 3 as id,'张三33' as nameValue union all select 4 as id,'张三44' as name union all
select 5 as id,'张三55' as nameValue union all select 6 as id,'张三66' as name union all
select 7 as id,'张三77' as nameValue union all select 8 as id,'张三88' as name

在这里插入图片描述

存储过程

基本概念

在 SQL Server 中,存储过程是一组预编译的 SQL 语句和逻辑,存储在数据库服务器上以便重复使用。
它们类似于应用程序中的函数,可以接受参数并执行一系列的 SQL 语句,然后返回结果或执行特定的操作。
存储过程可以帮助提高性能、安全性和可维护性,同时减少网络流量。
存储过程通常用于执行复杂的数据操作、事务控制、权限控制等。

基本结构

CREATE PROCEDURE [schema_name.]procedure_name
    @parameter1 datatype,
    @parameter2 datatype
AS
BEGIN
    -- 存储过程逻辑
END;

  • schema_name(可选):存储过程所属的模式。
  • procedure_name:存储过程的名称。
  • @parameter1, @parameter2:存储过程的参数列表,包括参数名和数据类型。
  • AS:指示存储过程逻辑的开始。
  • 存储过程逻辑:存储过程内部包含一系列 SQL 语句和控制流程,用于执行特定的操作或计算。
  • END:指示存储过程逻辑的结束。
    存储过程可以包含各种 SQL 语句、条件控制、循环等逻辑,以及事务处理和错误处理代码。创建存储过程后,可以通过调用存储过程的名称并传递相应的参数来执行它。

基础例子

下面是一个简单的 SQL Server 存储过程的示例,该存储过程接受一个参数 @employee_id,并返回该员工的姓名和工资信息:

CREATE PROCEDURE GetEmployeeInfo
    @employee_id INT
AS
BEGIN
    SELECT EmployeeName, Salary
    FROM Employees
    WHERE EmployeeID = @employee_id;
END;

在这个示例中:

  • 存储过程名为 GetEmployeeInfo。
  • 参数 @employee_id 的数据类型为 INT。
  • 存储过程的逻辑部分使用了简单的 SELECT 查询语句,根据提供的 @employee_id 查询员工的姓名和工资信息。
  • END 结束存储过程的逻辑部分。
    要执行这个存储过程,可以使用如下的 SQL 语句:
EXEC GetEmployeeInfo @employee_id = 12345;

其中 12345 是要查询的员工的 ID。

存储过程封装

-- 创建存储过程
create procedure getDataPro
    @id int
as
begin
    select top 1 *
    from(
        select 1 as id,'张三11' as nameValue union all select 2 as id,'张三22' as name union all 
        select 3 as id,'张三33' as nameValue union all select 4 as id,'张三44' as name union all
        select 5 as id,'张三55' as nameValue union all select 6 as id,'张三66' as name union all
        select 7 as id,'张三77' as nameValue union all select 8 as id,'张三88' as name
    ) a
    where id=1
    order by newid()
end

 -- 执行存储过程
exec getDataPro 8

在这里插入图片描述

文章推荐

【Sql Server】随机查询一条表记录,并重重温回顾下自定义函数的封装和使用

【Sql Server】锁表如何解锁,模拟会话事务方式锁定一个表然后进行解锁

【Sql Server】通过Sql语句批量处理数据,使用变量且遍历数据进行逻辑处理

【新星计划回顾】第六篇学习计划-通过自定义函数和存储过程模拟MD5数据

【新星计划回顾】第四篇学习计划-自定义函数、存储过程、随机值知识点

【Sql Server】Update中的From语句,以及常见更新操作方式

【Sql server】假设有三个字段a,b,c 以a和b分组,如何查询a和b唯一,但是c不同的记录

【Sql Server】新手一分钟看懂在已有表基础上修改字段默认值和数据类型

总结:温故而知新,不同阶段重温知识点,会有不一样的认识和理解,博主将巩固一遍知识点,并以实践方式和大家分享,若能有所帮助和收获,这将是博主最大的创作动力和荣幸。也期待认识更多优秀新老博主。

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

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

相关文章

Visual Studio +Resharp,让你在C#编程界一骑绝尘!【文末送2024C#入门到精通教程视频+源码C#.NET全栈开发高级VIP班[完结】

目录 前言 一、Visual Studio:C#开发的强大后盾 二、ReSharper:智能代码编辑器的典范 三、Visual Studio ReSharper:一骑绝尘的编程组合 四、如何发挥最大效能 五、结论 文末福利: 文末有福利 前言 在C#编程领域&#x…

情感分析及数据集代码解析

15.1. 情感分析及数据集 — 动手学深度学习 2.0.0 documentation (d2l.ai) 代码 import os import torch from torch import nn from d2l import torch as d2l#save d2l.DATA_HUB[aclImdb] (http://ai.stanford.edu/~amaas/data/sentiment/aclImdb_v1.tar.gz,01ada507287d828…

【Altium Designer】安装教程

一、软件下载 二、软件安装 三、授权文件激活 一、软件下载 Altium Designer官网下载 二、软件安装 1.解压完下载好的软件,鼠标右击【OfflineSetup_Altium_Designer_Public_24_5_1】安装程序,选择【以管理员身份运行】。 2.语言选择【Chinese】&#…

如何向《大众日报》理论稿投稿?

《大众日报》是山东省委机关报,其理论版是该报的重要版面之一,主要刊登关于政治、经济、文化、社会等方面的理论文章和研究成果。 - 投稿方式:通常可以通过电子邮件或在线投稿系统向《大众日报》理论版投稿。 - 选题范围:理论版…

回收站删掉的照片还能找回来吗?掌握这5个方法,很简单!

“我一不小心在回收站中误删了一些照片,这些照片对我来说是比较重要的,不知道这些还有机会将它们找回来吗?” 当我们不小心将珍贵的照片从计算机的回收站中误删时,那种瞬间的心痛和焦虑难以言表。这些照片可能记录了我们生活中的重…

kafka-生产者发送消息消费者消费消息

文章目录 1、生产者发送消息&消费者消费消息1.1、获取 kafka-console-producer.sh 的帮助信息1.2、生产者发送消息到某个主题1.3、消费主题数据 1、生产者发送消息&消费者消费消息 1.1、获取 kafka-console-producer.sh 的帮助信息 [rootlocalhost ~]# kafka-console…

解决mybatis/mybatis plus报错:Invalid bound statement (not found) 的方法汇总

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)问题,即在mybatis中dao接口与mapper配置文件在做映射绑定的时候接口与xml不匹配,要么是找不到,要么是找到了却匹配不到。 我的问题是项目没有把最新的方法x…

上海冠珠旗舰总店盛装开业暨冠珠瓷砖中国美学设计巡回圆满举办

上海,这座融合了东西方文化的国际化大都市,不仅是中国的时尚中心,也是全球潮流的汇聚地。在这里,古典与现代交织,传统与前卫并存,为传统色彩与现代设计的融合提供了得天独厚的条件。 5月25日,上…

svix - webhooks

文章目录 一、关于 SvixClient Library Overview与 Svix 托管服务的区别 二、运行服务器1、部署1.1 Docker1) 使用 Docker Compose2) 独立容器 1.2 预编译的二进制文件1.3 从源代码构建 2、运行时依赖项3、Redis/Valkey 注意事项持久性 Eviction 政策4、服务器配置4.1 配置文件…

红队技巧:仿冒Windows登录

Metasploit框架:phish_windows_credentials Metasploit带有内置的后期漏洞利用功能,可帮助我们完成任务。由于它是后渗透的模块,因此只需要输入会话即可: use post/windows/gather/phish_windows_credentials set session 1 …

WebGL学习(一)渲染关系

学习webgl 开发理解渲染关系是必须的,也非常重要,很多人忽视了这个过程。 我这里先简单写一下,后面尽量用通俗易懂的方式,举例讲解。 WebGL,全称Web Graphics Library,是一种在网页上渲染3D图形的技术。它…

【链表】Leetcode 61. 旋转链表【中等】

旋转链表 给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 示例 1: 输入:head [1,2,3,4,5], k 2 输出:[4,5,1,2,3] 解题思路 要将链表每个节点向右移动 k 个位置: 计算链表…

Leetcode3161. 物块放置查询(Go语言的红黑树 + 线段树)

题目截图 题目分析 每次1操作将会分裂成两块区间长度,以最近右端点记录左侧区间的长度即可 因此涉及到单点更新和区间查询 然后左右侧最近端点则使用redBlackTree,也就是python中的sortedlist ac code type seg []int// 把 i 处的值改成 val func (t …

Spark-RDD-常用算子(方法)详解

Spark概述 Spark-RDD概述 Spark RDD 提供了丰富的方法来对数据进行转换和操作。 对 RDD(Resilient Distributed Dataset)的操作可以分为两大类:转换算子(Transformations)和行动算子(Actions)…

无线领夹麦克风哪个品牌好?本期文章揭秘无线麦克风哪个品牌好用

​在当下这个全民皆为媒体的时代大潮中,视频分享已然成为了引领风尚的指向标。在自媒体领域竞争愈发激烈的态势下,若要在这片广阔海洋中扬帆远航,优秀的作品毫无疑问是吸引观众的关键所在。而想要塑造出这样的卓越之作,除了需要创…

java —— 异常处理

一、认识异常 java 中的异常大致分为三类:编译错误、逻辑错误、运行异常。其中编译错误和逻辑错误通常手动更改即可,运行异常是异常处理的主要内容。 java 中的异常全部继承自 Exception 类,其常见的子类如下: 查看异常&#xf…

vscode常用操作

1 vscode跳转node_modules下文件,没有切换定位到左侧菜单目录的问题 2,搜索node-modules 3,设置选中字体颜色 {"workbench.colorTheme": "Default Light Modern","editor.mouseWheelZoom": true,"termin…

clocking wizard IP核通过AXI4-Lite接口实现动态重新配置应用实例

在最近的FPGA应用中,应用到了基于Zynq 7000的Uart串口设计,为了让串口的时钟更精确,采用了外部时钟模式,如下图所示。外部时钟连接到了Clocking Wizard IP核的输出端。 在串口通信时,发现串口有错码出现。例如&#xf…

Secure Operation

文章目录 Secure Summation OperationSecure Set Union Operation Secure Summation Operation 让我们通过一个具体的例子来说明这个算法。 假设有三个数据拥有者 S1, S2 和 S3,他们分别持有以下值: S1 持有 value1 10S2 持有 value2 20S3 持有 val…

React 微信扫码登陆网页

微信扫码登陆网页 第一步:微信开放平台申请应用第二步:前端生成二维码第三步:微信扫码授权 微信官方开发说明文档 第一步:微信开放平台申请应用 微信开放平台注册开发者账号,并拥有一个已审核通过的网站应用&#xff…