Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/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 每个更新的临时表_Sql Server_Stored Procedures_Foreach_Temp Tables - Fatal编程技术网

Sql server 每个更新的临时表

Sql server 每个更新的临时表,sql-server,stored-procedures,foreach,temp-tables,Sql Server,Stored Procedures,Foreach,Temp Tables,我正在尝试遍历生成的临时表的所有记录以更新密钥。该表通过多个步骤进行组合,只有在表完成时才能分配索引 问题是,当我想要循环遍历临时表时,临时表没有索引,因此使用语句UPDATE tablename WHERE index=value是无用的 是否有一种方法可以让我循环浏览临时表并更新当前选定的记录。每个记录的id都应该递增 例如: IDField Field1 Field2 0 1 1 0 2 1

我正在尝试遍历生成的临时表的所有记录以更新密钥。该表通过多个步骤进行组合,只有在表完成时才能分配索引

问题是,当我想要循环遍历临时表时,临时表没有索引,因此使用语句UPDATE tablename WHERE index=value是无用的

是否有一种方法可以让我循环浏览临时表并更新当前选定的记录。每个记录的id都应该递增

例如:

IDField     Field1      Field2
0           1           1
0           2           1
0           1           2
0           3           3
循环浏览每条记录,将其更改为:

IDField     Field1      Field2
1           1           1
2           2           1
3           1           2
4           3           3
如果没有索引,这是否可能?如果显示我应该如何执行此操作?

您可以使用循环查看查询结果。下面是一个示例,说明如何在“从信息_Schema.Tables中选择表_Name”中循环表_Name


你说循环浏览每一条记录是什么意思?SQL Server最适用于基于集合的数据处理。还可以共享您编写的代码,它可以让用户更好地了解您想要实现的目标。@M.Ali代码/表格不是问题所在。但是我将为ideanow添加一个演示表,您如何定义分配给哪一行的数字?如何开始填充此临时表?我可以想出两种可能的解决方案,1如果使用CREATETABLE语句创建表,则在创建表时使用Identity字段填充此列。2如果您正在使用SELECT*INTO Temp FROM table动态创建此表,请在SELECT语句中使用ROW_NUMBER为该列提供增量值。@M.Ali谢谢!使用ROW_编号解决了问题:@Yazabpro感谢您的回复,M.Ali的评论使用带有select into的ROW_编号解决了问题
DECLARE @TableName nvarchar(128)
DECLARE @getTableName CURSOR
SET @getTableName = CURSOR FOR
select Information_SCHEMA.tables.Table_name from Information_SCHEMA.tables
OPEN @getTableName
FETCH NEXT
FROM @getTableName INTO @TableName
WHILE @@FETCH_STATUS = 0
BEGIN
    -- Use @TableName the way you need
    FETCH NEXT
    FROM @getTableName INTO @TableName
END
CLOSE @getTableName
DEALLOCATE @getTableName