Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用EXEC对while循环中的变量进行计数_Sql Server_Tsql - Fatal编程技术网

Sql server 使用EXEC对while循环中的变量进行计数

Sql server 使用EXEC对while循环中的变量进行计数,sql-server,tsql,Sql Server,Tsql,我还有一个问题,希望你能帮助我 我需要一个while循环,在该循环中,我使用之前定义的变量(此处:@SETi)执行(EXEC)命令。除其他外,我用于while循环的变量“i”必须是count up 下面是我的一小段代码: DECLARE @i int SET @i = 1 DECLARE @SETi nvarchar(max) WHILE @i <= 10 BEGIN -- Tabelle definieren SET @SETi = 'S

我还有一个问题,希望你能帮助我

我需要一个while循环,在该循环中,我使用之前定义的变量(此处:@SETi)执行(EXEC)命令。除其他外,我用于while循环的变量“i”必须是count up

下面是我的一小段代码:

DECLARE @i int
SET @i = 1

DECLARE @SETi nvarchar(max)

WHILE @i <= 10

    BEGIN

        -- Tabelle definieren

        SET @SETi = 'SET '+CAST((@i) as nvarchar(max))+' += 1'

        EXEC (@SETi)

    END
DECLARE@i int
设置@i=1
声明@SETi nvarchar(最大值)

而@i在当前上下文中增加变量,因为
EXEC
有自己的变量,您不能从那里访问它:

DECLARE @i int = 1
DECLARE @sql nvarchar(max)

WHILE @i <= 10
    BEGIN
        SET @sql = 'create table someName' + CAST(@i as nvarchar(max)) +...

        EXEC (@sql)

        SET @i = @i + 1
    END
声明@i int=1
声明@sql nvarchar(最大值)

使用@i标记dbms时!(看起来一点也不像ANSI SQL…)你想做什么?首先,你忘记了while循环中的“SET@i=@i+1”,所以它是无止境的。当您在exec之前添加“print@SETi”时,您可以看到您做错了什么。“SET@i=@i+1”分别包含在变量@SETi@T.R.中的我的exec命令中,您为什么使用动态sql?详细说明你想做什么…嗨,谢谢你的回答。我知道你的解决办法行得通,但我不知道我是否能解决我的问题。。