【发布时间】:2021-01-15 07:11:01
【问题描述】:
我正在使用动态 SQL(仍处于学习阶段),我被困在需要使用 WHILE 循环的部分:
SET @tableName = (SELECT DISTINCT TableName FROM @dataStructure)
这里基本上我想确保@tableName(上面定义)中的所有表都应该发生while循环内的操作。我不知道如何将这个条件作为 while 循环的输入。
WHILE() #HOW CAN I PUT THE CONDITION HERE????
BEGIN
SET @str = ''
SET @sqlstr = ''
SELECT @table = TableName FROM @dataStructure
SET @str = 'UPDATE a0' + char(13) + char(10)
+ ' SET a0.Mjolnir_Source_ID = CONCAT( '
SELECT @str = @str + IIF(ReferenceTable IS NULL, 'a0.' + columnName , alias + '.Mjolnir_Source_ID') + ','
FROM @dataStructure
WHERE TableName = @tableName AND ReferenceTable IS NOT NULL
ORDER BY columnName
SELECT @str = @str + ') FROM ' + @table + ' a0'
SELECT @sqlstr = @sqlstr + +
+ ' INNER JOIN ' + QUOTENAME(@U4SM_db_name) + '.dbo.' + QUOTENAME(ReferenceTable) + ' ' + alias + char(13) + char(10)
+ ' ON a0.' + columnName + ' = ' + alias + '.' + ReferenceColumn + char(13) + char(10)
FROM @dataStructure
WHERE TableName = @tableName AND ReferenceTable IS NOT NULL
ORDER BY columnPosition
select @str + @sqlstr
select @sqlstr
SET @tableName = @tableName + 1
END
谁能帮帮我?
【问题讨论】:
-
就个人而言,我不会使用
WHILE,而是会使用字符串聚合。你想在每张桌子上达到什么目标? -
@Larnu 我有变量“@tableName”内的表列表,我只想对这些表执行以下操作。
-
这并没有回答我提出的问题。您正在尝试执行的这项任务是做什么的?
标签: sql-server tsql while-loop