当前位置: 首页 > news >正文

详细分析Sql Server中的declare基本知识

目录

  • 前言
  • 1. 基本知识
  • 2. Demo
  • 3. 拓展Mysql
  • 4. 彩蛋

前言

实战探讨主要来源于触发器的Demo

1. 基本知识

@DECLARE 语句用于声明变量

声明的变量可以用于存储临时数据,并在 SQL 查询中多次引用

  • 声明变量:使用 DECLARE 语句声明一个或多个变量
  • 变量命名:变量名以 @ 开头,后面跟随变量名
  • 变量类型:必须为每个变量指定数据类型,如 INT、VARCHAR、DATE 等
  • 赋值:使用 SET 语句或在声明时直接赋值
  • 使用变量:在查询中引用变量,可以进行各种操作,如条件判断、循环等

基本的语法如下:

DECLARE @variable_name datatype;

2. Demo

示例 1:简单声明和赋值

-- 声明一个整数变量,还可直接这样定义 DECLARE @MyNumber INT=10;
DECLARE @MyNumber INT;
-- 为变量赋值
SET @MyNumber = 10;
-- 使用变量
SELECT @MyNumber AS 'My Number';

截图如下:

在这里插入图片描述

示例 2:在查询中使用变量

-- 声明变量
DECLARE @FirstName VARCHAR(50);
DECLARE @LastName VARCHAR(50);
DECLARE @FullName VARCHAR(100);-- 赋值
SET @FirstName = 'John';
SET @LastName = 'Doe';-- 连接字符串
SET @FullName = @FirstName + ' ' + @LastName;-- 使用变量
SELECT @FullName AS 'Full Name';

截图如下:

在这里插入图片描述

示例 3:在条件语句中使用变量

-- 声明变量
DECLARE @Threshold INT;
DECLARE @Result VARCHAR(50);-- 赋值
SET @Threshold = 50;-- 条件判断
IF @Threshold > 100SET @Result = 'Above 100';
ELSESET @Result = '100 or Below';-- 使用变量
SELECT @Result AS 'Result';

截图如下:

在这里插入图片描述

示例 4:在循环中使用变量

-- 声明变量
DECLARE @Counter INT;
DECLARE @MaxCount INT;-- 赋值
SET @Counter = 1;
SET @MaxCount = 5;-- 循环
WHILE @Counter <= @MaxCount
BEGINPRINT 'Counter is ' + CAST(@Counter AS VARCHAR(10));SET @Counter = @Counter + 1;
END

截图如下:

在这里插入图片描述

3. 拓展Mysql

对于Mysql的临时变量基本知识如下

  • 声明变量:使用 SET 或 SELECT … INTO 语句来声明变量
  • 变量命名:变量名以 @ 开头,后面跟随变量名
  • 变量类型:MySQL 中的变量不需要显式声明数据类型
  • 使用变量:在查询中引用变量,可以进行各种操作,如条件判断、循环等

基本语法如下:

SET @variable_name = value;

与上面同理,Demo如下:

示例 1:简单声明和赋值

-- 声明并赋值变量
SET @MyNumber = 10;
-- 使用变量
SELECT @MyNumber AS 'My Number';

截图如下:

在这里插入图片描述

示例 2:在查询中使用变量

-- 声明并赋值变量
SET @FirstName = 'John';
SET @LastName = 'Doe';-- 连接字符串
SET @FullName = CONCAT(@FirstName, ' ', @LastName);-- 使用变量
SELECT @FullName AS 'Full Name';

截图如下:

在这里插入图片描述

示例 3:在条件语句中使用变量
sql
复制代码
– 声明并赋值变量
SET @Threshold = 50;

– 条件判断
IF @Threshold > 100 THEN
SET @Result = ‘Above 100’;
ELSE
SET @Result = ‘100 or Below’;
END IF;

– 使用变量
SELECT @Result AS ‘Result’;

截图如下:

在这里插入图片描述

示例 4:在循环中使用变量 (必须将循环逻辑封装在存储过程(或存储函数)中)

DELIMITER $$CREATE PROCEDURE LoopExample()
BEGINDECLARE Counter INT DEFAULT 1;DECLARE MaxCount INT DEFAULT 5;-- 使用准备好的语句进行循环PREPARE stmt FROM 'SELECT ? AS Counter';WHILE Counter <= MaxCount DOEXECUTE stmt USING @Counter;SET Counter = Counter + 1;END WHILE;DEALLOCATE PREPARE stmt;
END$$DELIMITER ;-- 调用存储过程
CALL LoopExample();

截图如下:

在这里插入图片描述

4. 彩蛋

以下为错误的Demo

对于循环遍历,Mysql中不适合使用if,需要使用case

-- 声明并赋值变量
SET @Threshold = 50;-- 条件判断
IF @Threshold > 100 THENSET @Result = 'Above 100';
ELSESET @Result = '100 or Below';
END IF;-- 使用变量
SELECT @Result AS 'Result';

以及不可直接使用如下方式

-- 声明并赋值变量
SET @Counter = 1;
SET @MaxCount = 5;-- 使用准备好的语句进行循环
PREPARE stmt FROM 'SELECT ? AS Counter';
WHILE @Counter <= @MaxCount DOEXECUTE stmt USING @Counter;SET @Counter = @Counter + 1;
END WHILE;
DEALLOCATE PREPARE stmt;

相关文章:

详细分析Sql Server中的declare基本知识

目录 前言1. 基本知识2. Demo3. 拓展Mysql4. 彩蛋 前言 实战探讨主要来源于触发器的Demo 1. 基本知识 DECLARE 语句用于声明变量 声明的变量可以用于存储临时数据&#xff0c;并在 SQL 查询中多次引用 声明变量&#xff1a;使用 DECLARE 语句声明一个或多个变量变量命名&a…...

Perl 语言入门:编写并执行你的第一个脚本

摘要 Perl 是一种高级、通用的、解释型、动态编程语言&#xff0c;以其强大的文本处理能力而闻名。本文将指导初学者如何编写和执行他们的第一个 Perl 脚本&#xff0c;包括 Perl 的基本概念、脚本的基本结构、运行 Perl 脚本的方法以及一些简单的 Perl 语法。 引言 Perl&am…...

python库 - missingno

missingno 是一个用于可视化和分析数据集中缺失值的 Python 库。它提供了一系列简单而强大的工具&#xff0c;帮助用户直观地理解数据中的缺失模式&#xff0c;从而更好地进行数据清洗和预处理。missingno 库特别适用于数据分析和数据科学项目&#xff0c;尤其是在处理缺失数据…...

VPN的限制使得WinSCP无法直接连接到FTP服务器解决办法

由于VPN的限制使得WinSCP无法直接连接到FTP服务器&#xff0c;并且堡垒机的文件上传限制为500M&#xff0c;因此我们需要找到一种绕过这些限制的方法。以下是几个可行的方案&#xff1a; 方法1&#xff1a;通过分割文件上传 分割文件&#xff1a; 使用文件分割工具&#xff08…...

PCI DSS是什么?

PCI DSS&#xff0c;全称为Payment Card Industry Data Security Standard&#xff08;支付卡行业数据安全标准&#xff09;&#xff0c;是由支付卡行业安全标准委员会&#xff08;PCI Security Standards Council&#xff09;制定的一套安全标准&#xff0c;旨在保护信用卡信息…...

DeepMind的JEST技术:AI训练速度提升13倍,能效增强10倍,引领绿色AI革命

谷歌旗下的人工智能研究实验室DeepMind发布了一项关于人工智能模型训练的新研究成果&#xff0c;声称其新提出的“联合示例选择”&#xff08;Joint Example Selection&#xff0c;简称JEST&#xff09;技术能够极大地提高训练速度和能源效率&#xff0c;相比其他方法&#xff…...

如何使用 pytorch 创建一个神经网络

我已发布在&#xff1a;如何使用 pytorch 创建一个神经网络 SapientialM.Github.io 构建神经网络 1 导入所需包 import os import torch from torch import nn from torch.utils.data import DataLoader from torchvision import datasets, transforms2 检查GPU是否可用 dev…...

Java版Flink使用指南——定制RabbitMQ数据源的序列化器

大纲 新建工程新增依赖数据对象序列化器接入数据源 测试修改Slot个数打包、提交、运行 工程代码 在《Java版Flink使用指南——从RabbitMQ中队列中接入消息流》一文中&#xff0c;我们从RabbitMQ队列中读取了字符串型数据。如果我们希望读取的数据被自动化转换为一个对象&#x…...

CV每日论文--2024.7.8

1、DisCo-Diff: Enhancing Continuous Diffusion Models with Discrete Latents 中文标题&#xff1a;DisCo-Diff&#xff1a;利用离散潜伏增强连续扩散模型 简介&#xff1a;这篇文章提出了一种新型的离散-连续潜变量扩散模型(DisCo-Diff),旨在改善传统扩散模型(DMs)存在的问…...

【AI大模型】赋能儿童安全:楼层与室内定位实践与未来发展

文章目录 引言第一章&#xff1a;AI与室内定位技术1.1 AI技术概述1.2 室内定位技术概述1.3 楼层定位的挑战与解决方案 第二章&#xff1a;儿童定位与安全监控的需求2.1 儿童安全问题的现状2.2 智能穿戴设备的兴起 第三章&#xff1a;技术实现细节3.1 硬件设计与选择传感器选择与…...

云服务器linux系统安装配置docker

在我们拿到一个纯净的linux系统时&#xff0c;我需要进行一些基础环境的配置 &#xff08;如果是云服务器可以用XShell远程连接&#xff0c;如果连接不上可能是服务器没开放22端口&#xff09; 下面是配置环境的步骤 sudo -s进入root权限&#xff1a;退出使用exit sudo -i进入…...

泰勒雷达图2

matplotlib绘制泰勒雷达图 import matplotlib.pyplot as plt import numpy as np from numpy.core.fromnumeric import shape import pandas as pd import dask.dataframe as dd from matplotlib.projections import PolarAxes import mpl_toolkits.axisartist.floating_axes a…...

数据库容灾 | MySQL MGR与阿里云PolarDB-X Paxos的深度对比

开源生态 众所周知&#xff0c;MySQL主备库&#xff08;两节点&#xff09;一般通过异步复制、半同步复制&#xff08;Semi-Sync&#xff09;来实现数据高可用&#xff0c;但主备架构在机房网络故障、主机hang住等异常场景下&#xff0c;HA切换后大概率就会出现数据不一致的问…...

react根据后端返回数据动态添加路由

以下代码都为部分核心代码 一.根据不同的登录用户&#xff0c;返回不同的权限列表 &#xff0c;以下是三种不同用户限权列表 const pression { //超级管理员BigAdmin: [{key: "screen",icon: "FileOutlined",label: "数据图表",},{key: "…...

机器学习中的可解释性

「AI秘籍」系列课程&#xff1a; 人工智能应用数学基础 人工智能Python基础 人工智能基础核心知识 人工智能BI核心知识 人工智能CV核心知识 为什么我们需要了解模型如何进行预测 我们是否应该始终信任表现良好的模型&#xff1f;模型可能会拒绝你的抵押贷款申请或诊断你患…...

上海慕尼黑电子展开展,启明智显携物联网前沿方案亮相

随着科技创新的浪潮不断涌来&#xff0c;上海慕尼黑电子展在万众瞩目中盛大开幕。本次展会汇聚了全球顶尖的电子产品与技术解决方案&#xff0c;成为业界瞩目的焦点。启明智显作为物联网彩屏显示领域的佼佼者携产品亮相展会&#xff0c;为参展者带来了RTOS、LINUX全系列方案及A…...

Centos7离线安装ElasticSearch7.4.2

一、官网下载相关的安装包 ElasticSearch7.4.2&#xff1a; elasticsearch-7.4.2-linux-x86_64.tar.gz 下载中文分词器&#xff1a; elasticsearch-analysis-ik-7.4.2.zip 二、上传解压文件到服务器 上传到目录&#xff1a;/home/data/elasticsearch 解压文件&#xff1…...

深入理解sklearn中的模型参数优化技术

参数优化是机器学习中的关键步骤&#xff0c;它直接影响模型的性能和泛化能力。在sklearn中&#xff0c;参数优化可以通过多种方式实现&#xff0c;包括网格搜索&#xff08;GridSearchCV&#xff09;、随机搜索&#xff08;RandomizedSearchCV&#xff09;和贝叶斯优化等。本文…...

【Elasticsearch】开源搜索技术的演进与选择:Elasticsearch 与 OpenSearch

开源搜索技术的演进与选择&#xff1a;Elasticsearch 与 OpenSearch 1.历史发展2.OpenSearch 与 Elasticsearch 相同点3.OpenSearch 与 Elasticsearch 不同点3.1 版本大不同3.2 许可证不同3.3 社区不同3.4 功能不同3.5 安全性不同3.6 性能不同3.7 价格不同3.8 两者可相互导入 4…...

欧拉openEuler 22.03 LTS-部署k8sv1.03.1

1.设置ip # vi /etc/sysconfig/network-scripts/ifcfg-ens32 TYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOstatic DEFROUTEyes IPV4_FAILURE_FATALno #IPV6INITyes #IPV6_AUTOCONFyes #IPV6_DEFROUTEyes #IPV6_FAILURE_FATALno #IPV6_ADDR_GEN_MODEeui64 NAMEens1…...

老年生活照护实训室:为养老服务业输送专业人才

本文探讨了老年生活照护实训室在养老服务业专业人才培养中的关键作用。通过详细阐述实训室的功能、教学实践、对学生能力的培养以及面临的挑战和解决方案&#xff0c;强调了其在提升人才素质、满足行业需求方面的重要性&#xff0c;旨在为养老服务业的可持续发展提供有力的人才…...

go语言中使用WaitGroup和channel实现处理多线程问题

WaitGroup 背景 如果将一个任务分为任意个小任务&#xff0c;并且不关心小任务的执行顺序&#xff0c;并且希望等待全部的小任务执行完成后再去操作后面的逻辑&#xff0c;那我推荐你用sync.WaitGRoup 使用方法 比如&#xff0c;有一个任务需要执行 3 个子任务&#xff0c;…...

Open3D 计算点云的平均密度

目录 一、概述 1.1基于领域密度计算原理 1.2应用 二、代码实现 三、实现效果 2.1点云显示 2.2密度计算结果 一、概述 在点云处理中&#xff0c;点的密度通常表示为某个点周围一定区域内的点的数量。高密度区域表示点云较密集&#xff0c;低密度区域表示点云较稀疏。计算…...

C语言之数据在内存中的存储(1),整形与大小端字节序

目录 前言 一、整形数据在内存中的存储 二、大小端字节序 三、大小端字节序的判断 四、字符型数据在内存中的存储 总结 前言 本文主要讲述整型包括字符型是如何在内存中存储的&#xff0c;涉及到大小端字节序这一概念&#xff0c;还有如何判断大小端&#xff0c;希望对大…...

B端全局导航:左侧还是顶部?不是随随便便,有依据在。

一、什么是全局导航 B端系统的全局导航是指在B端系统中的主要导航菜单&#xff0c;它通常位于系统的顶部或左侧&#xff0c;提供了系统中各个模块和功能的入口。全局导航菜单可以帮助用户快速找到和访问系统中的各个功能模块&#xff0c;提高系统的可用性和用户体验。 全局导航…...

什么是海外仓管理自动化?策略及落地实施步骤指南

作为海外仓的管理者&#xff0c;你每天都面临提高海外仓运营效率、降低成本和满足客户需求的问题。海外仓自动化管理技术为这些问题提供了不错的解决思路&#xff0c;不过和任何新技术一样&#xff0c;从策略到落地实施&#xff0c;都有一个对基础逻辑的认识过程。 今天我们整…...

自定义控件三部曲之绘图篇(六)Paint之函数大汇总、ColorMatrix与滤镜效果、setColorFilter

在自定义控件的绘图篇中&#xff0c;Paint 类是核心的组成部分之一&#xff0c;它控制了在 Canvas 上绘制的内容的各种属性&#xff0c;包括颜色、风格、抗锯齿、透明度等等。下面将详细介绍 Paint 的主要功能以及如何使用 ColorMatrix 和 setColorFilter 来实现滤镜效果。 Pa…...

请写sql满足业务:找到连续登录3天以上的用户

为了找到连续登录超过 3 天的用户&#xff0c;我们可以使用 SQL 窗口函数和递归查询来实现。假设有一个 user_logins 表&#xff0c;包含以下字段&#xff1a; user_id&#xff08;用户ID&#xff09;login_date&#xff08;登录日期&#xff09; 假设 login_date 是 DATE 类…...

fatal error: apriltag/apriltag.h: No such file or directory 的 参考解决方法

文章目录 写在前面一、问题描述二、解决方法参考链接 写在前面 自己的测试环境&#xff1a; Ubuntu20.04&#xff0c;ROS-Noteic 一、问题描述 自己编译ROS程序的时候遇到如下问题&#xff1a; fatal error: apriltag/apriltag.h: No such file or directory9 | #include &…...

C++继承(一文说懂)

目录 一&#xff1a; &#x1f525;继承的概念及定义1.1 继承的概念1.2 继承定义1.2.1 定义格式1.2.2 继承关系和访问限定符1.2.3 继承基类成员访问方式的变化 二&#xff1a;&#x1f525;基类和派生类对象赋值转换三&#xff1a;&#x1f525;继承中的作用域四&#xff1a;&a…...