首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将局部变量解析为引用的局部变量的值

将局部变量解析为引用的局部变量的值
EN

Stack Overflow用户
提问于 2015-01-09 08:44:26
回答 1查看 38关注 0票数 0

我有一个局部变量,它是另一个局部变量的名称。我想将第一个局部变量的值更改为另一个局部变量的值。在没有硬编码的情况下,最好的方法是什么?此外,我只有数据库的读访问权限。(最好是我不想在数据库中写入任何内容)

示例:

代码语言:javascript
复制
DECLARE @x1 VARCHAR(10), @x2 VARCHAR(10), @x3 VARCHAR(10), @x4 VARCHAR(10)
DECLARE @y VARCHAR(10)

SET @var1 = 'abc'
SET @var2 = 'def'
SET @var3 = 'ghi'
SET @var4 = 'jkl'

如果@y最初等于'@var1',我想将@y的值更改为'abc‘,如果初始值为'@var2’,则更改为'def‘,依此类推

有没有人知道如何做到这一点而不在值中硬编码,因为我可能有更多的局部变量?

我知道这样做的一种方法是使用一个包含with all变量的系统表。SQL也有类似的东西吗?如果有,那么表的名称是什么,以及如何读取它。

EN

回答 1

Stack Overflow用户

发布于 2015-01-10 04:53:09

将所有SQL注入警告放在一边...

使用sp_executesql,您可以获得作为输出变量返回的变量的值。由于@y具有该变量的名称,因此您需要做的就是构建将该值赋给@y的SQL语句

代码语言:javascript
复制
DECLARE @var1   VARCHAR(10), 
        @var2   VARCHAR(10), 
        @var3   VARCHAR(10), 
        @var4   VARCHAR(10),
        @y      VARCHAR(10) = '@var1'

SET @var1 = 'abc'
SET @var2 = 'def'
SET @var3 = 'ghi'
SET @var4 = 'jkl'

DECLARE @SQL    NVARCHAR(MAX);
SET @SQL = 'SET @y = ' + @y;
EXEC sp_executesql @SQL, N'
    @var1   VARCHAR(10), 
    @var2   VARCHAR(10), 
    @var3   VARCHAR(10), 
    @var4   VARCHAR(10),
    @y      VARCHAR(10) OUT', 
    @var1, @var2, @var3, @var4, @y OUT

SELECT @Y
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27852171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档