欢迎投稿

今日深度:

探讨SqlServer中的declare基本知识,

探讨SqlServer中的declare基本知识,


目录
  • 前言
  • 1. 基本知识
  • 2. Demo
    • 示例 1:简单声明和赋值
    • 示例 2:在查询中使用变量
    • 示例 3:在条件语句中使用变量
    • 示例 4:在循环中使用变量
  • 3. 拓展Mysql
    • 示例 1:简单声明和赋值
    • 示例 2:在查询中使用变量
    • 示例 3:在条件语句中使用变量
    • 示例 4:在循环中使用变量 (必须将循环逻辑封装在存储过程(或存储函数)中)
  • 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 > 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:在条件语句中使用变量

    – 声明并赋值变量
    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;

    到此这篇关于Sql Server中的declare基本知识的文章就介绍到这了,更多相关Sql Server declare内容请搜索PHP之友以前的文章或继续浏览下面的相关文章希望大家以后多多支持PHP之友!

    您可能感兴趣的文章:
    • SQL server数据库declare和set用法技巧小结
    • SQLserver中的declare变量用法

    www.htsjk.Com true http://www.htsjk.com/Sql_Server/48261.html NewsArticle 探讨SqlServer中的declare基本知识, 目录 前言 1. 基本知识 2. Demo 示例 1:简单声明和赋值 示例 2:在查询中使用变量 示例 3:在条件语句中使用变量 示例 4:在循环中使用变量 3. 拓展My...
    评论暂时关闭