首页 > 其他分享 >游标循环中定义变量

游标循环中定义变量

时间:2023-12-22 18:23:55浏览次数:33  
标签:定义 temp 游标 循环 CR DECLARE 变量

在游标循环中定义变量,与外面定义变量有何不同,如下代码所示:

CREATE TABLE #temp (NAME VARCHAR(50));
INSERT INTO #temp VALUES ('1');
INSERT INTO #temp VALUES ('2');

DECLARE @i INT = 1;

DECLARE @djbh VARCHAR(50);
DECLARE A_CR CURSOR FORWARD_ONLY FOR SELECT NAME FROM #temp;
OPEN A_CR;
FETCH NEXT FROM A_CR
INTO @djbh;
WHILE @@fetch_status = 0
    BEGIN
        DECLARE @newremark VARCHAR(500);
        IF (@i = 1)
            BEGIN
                SET @newremark = 'ddddddd';
            END;
        SELECT @newremark;
        SET @i = @i + 1;
        FETCH NEXT FROM A_CR
        INTO @djbh;
    END;
--关闭游标
CLOSE A_CR;
DEALLOCATE A_CR;

设想:由于是在游标循环中定义的变量,每次循环都会声明一个新的变量,因此本人感觉结果应该为:

dddddddd/NULL,但是实际却生成了两行ddddddddd.如下所示:

此结果的产生,只能解释为:在游标循环内部声明变量(没有默认值的情况下),那么跟在外面声明变量的效果是一样的。

结论:

若想要生成符合预期的结果,两种改造方法:

1.在循环内部定义变量时设置一个默认值,如:@a varchar(50)='',

2.在变量外部声明一个变量,然后在循环内先设置一个默认值,再根据业务需要进行复制(推荐,易读不容易出错)。

标签:定义,temp,游标,循环,CR,DECLARE,变量
From: https://www.cnblogs.com/jizhong/p/17922138.html

相关文章

  • spring项目中自定义注解
    使用BeanPostProcessorBeanPostProcessor是Spring框架提供的一个接口,用于在Spring容器中对Bean进行后处理。自定义注解后,可以实现一个BeanPostProcessor实现类,在BeanPostProcessor的postProcessAfterInitialization()方法中,使用ClassPathScanningCandidateResol......
  • 在注册表中设置用户或系统环境变量的值
    12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788......
  • Camstar弹出自定义VP
    写在公共类里:  主页面代码如下: 按钮里写代码,或者某方法里写主页面的传递参数定义:  弹出页面如下:   弹出页面代码如下: ......
  • 无涯教程-PL/SQL - 变量声明
    在本章中,无涯教程将讨论Pl/SQL中的变量,变量不过是无涯教程程序可以操作的存储区域的名称。变量声明PL/SQL变量必须在声明部分或程序包中声明为全局变量,声明变量时,PL/SQL为变量的值分配内存,并且存储位置由变量名标识。variable_name[CONSTANT]datatype[NOTNULL][:=|DEFA......
  • cmd调用函数和输入变量
    首先,你需要将这个函数保存在一个Python文件中,例如my_script.py。然后,你可以在命令提示符(cmd)中使用以下命令来运行这个脚本:pythonmy_script.py然而,这样做并不能直接调用你的函数。为了在命令行中调用这个函数并传递参数,你需要在你的脚本中添加一些代码来接收命令行参数。这可以通......
  • el-select自定义指令用于触底加载分页请求options数据(附上完整代码和接口可直接用)
    问题描述某些情况下,下拉框需要做触底加载,发请求,获取option的数据为了方便复用,笔者封装了一个自定义指令另外也提供了一个简单的接口,用于演示我们先看看效果图效果图思路分析注意事项一el-select要不嵌入到body中为何,不嵌入到body标签中呢?答曰,更加方便自定义指令管理......
  • Unity3D 自定义Shader 与 内置Shader 如何整合详解
    Unity3D是一款非常流行的游戏开发引擎,它提供了丰富的内置Shader供开发者使用。然而,有时候我们需要根据具体需求自定义Shader来实现特定的效果。本文将详细介绍Unity3D中如何整合自定义Shader和内置Shader,并给出相关的技术详解和代码实现。对啦!这里有个游戏开发交流小组里面聚集了......
  • matlab 全局变量的使用举例
    昨天在写项目时,想要把获取到的临时变量放入一个全局变量,为以后的使用做准备,结果总是出错,今天做了一个小程序,放在这里备用。自定义函数:global_p.mfunctiony=global_p(x)%H1注释行%测试全局变量的用法globalp;%3、声明p是全局变量p=p+1;%4、对全局变量p的操作fprint......
  • 如何实现自定义表情?
    1、继承实现协议RCEmoticonTabSource2、在实现的代理方法loadEmoticonView返回View,(返回的以下图中红框区域,里面的视图及逻辑需要自己来添加实现)3、在会话页面viewdidLoad里添加表情包示例代码(Demo源码2中的类RCDCustomerEmoticonTab):RCDCustomerEmoticonTab.h@inter......
  • 自定义中间表(中介模型)
    1多对多关系中,第三张表的建立 -默认使用ManyToMany,自动创建-使用中介模型 -即手动创建第三张表,又要使用好用的查询-完全自己写第三张表#使用中介模型classAuthor(models.Model):nid=models.AutoField(primary_key=True)name=models.CharField(max_length=......