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

前言

实战探讨主要来源于触发器的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 > 100
    SET @Result = 'Above 100';
ELSE
    SET @Result = '100 or Below';

-- 使用变量
SELECT @Result AS 'Result';

截图如下:

在这里插入图片描述

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

-- 声明变量
DECLARE @Counter INT;
DECLARE @MaxCount INT;

-- 赋值
SET @Counter = 1;
SET @MaxCount = 5;

-- 循环
WHILE @Counter <= @MaxCount
BEGIN
    PRINT '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()
BEGIN
    DECLARE Counter INT DEFAULT 1;
    DECLARE MaxCount INT DEFAULT 5;

    -- 使用准备好的语句进行循环
    PREPARE stmt FROM 'SELECT ? AS Counter';
    WHILE Counter <= MaxCount DO
        EXECUTE 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 THEN
    SET @Result = 'Above 100';
ELSE
    SET @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 DO
    EXECUTE stmt USING @Counter;
    SET @Counter = @Counter + 1;
END WHILE;
DEALLOCATE PREPARE stmt;

相关推荐

  1. 详细分析Vue3卡槽知识点(附Demo)

    2024-07-13 22:08:03       29 阅读
  2. 优化sqlserver not like

    2024-07-13 22:08:03       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-13 22:08:03       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 22:08:03       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 22:08:03       57 阅读
  4. Python语言-面向对象

    2024-07-13 22:08:03       68 阅读

热门阅读

  1. 使用 GPT-4 和 ChatGPT 构建应用程序

    2024-07-13 22:08:03       21 阅读
  2. llama-recipes

    2024-07-13 22:08:03       25 阅读
  3. 排序算法基础(未完待续)

    2024-07-13 22:08:03       25 阅读
  4. 力扣题解(最长等差数列)

    2024-07-13 22:08:03       21 阅读
  5. C语言程序设计核心详解 第三章:顺序结构

    2024-07-13 22:08:03       19 阅读
  6. Windows系统网络配置命令详细指南

    2024-07-13 22:08:03       17 阅读
  7. PHP语言教程与实战案例

    2024-07-13 22:08:03       23 阅读
  8. 在线课程平台

    2024-07-13 22:08:03       24 阅读