sql-server - SQL Server:无法使用 where 语句从临时表中检索值
问题描述
我有以下存储过程,它将记录插入,Table2
并更新id
. inTable1
来自序列号 in 。id
Table1
Table2
我曾经SCOPE_IDENTITY()
在范围内获取最新分配的序列号。
但是,当我执行该过程时,并@flag = 1
没有选择任何记录。我知道WHERE id = @id
出了点问题,因为当我注释掉 where 子句时,它起作用了。
DECLARE @id INT
SELECT id, * INTO #t FROM Table1
IF @flag = 1
BEGIN
INSERT INTO Table2 (col1, col2)
VALUES ('value', 'value2')
SET @id = SCOPE_IDENTITY()
UPDATE Table1
SET id = @id
SELECT *
FROM #t
WHERE id = @id ---this is the problem!!
END
ELSE
BEGIN
SELECT * FROM #t
END
这有什么问题?
解决方案
这是问题所在,IDs
您的表中还没有您的可用#t
。更新您的ID
in后填充此表Table1
。
BEGIN
DECLARE @id INT
IF @flag = 1
BEGIN
Insert Table2(col1,col2)
VALUES ('value', 'value2')
SET @id = SCOPE_IDENTITY();
UPDATE Table1
SET id = @id;
SELECT id, * INTO #t From Table1; -- This should be its position.
SELECT *
FROM #t
WHERE id = @id
END
ELSE
BEGIN
SELECT id, * FROM Table1
END
END
推荐阅读
- c++ - Visual Studio 代码文件未输出
- vb6 - 子项中的 vb6 Treeview 刷新(显示更新的文件)
- list - 数据框列表的统计信息
- javascript - 我如何在nodejs中使用字符串作为变量
- symbols - 用moderncv乳胶制作的求职信中的Skype符号
- javascript - 在 AngularJS 组件中动态生成 ng-options 的值
- html - 如何使我的代码看起来像屏幕截图?http://prntscr.com/pqrax8
- javascript - 使用 javascript 调整大小时图像方向丢失
- angular - 模块嵌套组件动画
- java - 在用 java 编码的 Eclipse 中导出 JAR 文件时出错