存储过程问题

Aa7643 2005-08-09 10:29:56
从MyTable复制某一条记录,成为一条新的记录,然后再修改这两条记录,以下为存储过程的部分:

//根据@ID复制一条记录 (1)
INSERT INTO MyTable(Name,Description)
SELECT Name,Description
FROM MyTable WHERE ID=@ID
//获取最后插入的标识值
SELECT @intID=@@IDENTITY
//修改新复制成的记录 (2)
UPDATE MyTable SET Name='test1' WHERE ID=@intID
//修改被复制的那条记录 (3)
UPDATE MyTable SET Name='test2' WHERE ID=@ID

我在本地测试三个步骤都成功(xp+SqlServer2000个人英文版)
但是我放到服务器上面(Server2003+SqlServer2000企业英文版),步骤(2)(3)没有成功,
不知道什么原因,请大虾们帮忙,谢谢!
...全文
73 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Aa7643 2005-08-09
  • 打赏
  • 举报
回复
如果是@intID没取到值或值不正确,那么步骤(3)也应该执行吧?步骤(3)与@intID无关
Aa7643 2005-08-09
  • 打赏
  • 举报
回复
SELECT @intID=@@IDENTITY
set @intID=@@IDENTITY
有区别吗?
---涛声依旧--- 2005-08-09
  • 打赏
  • 举报
回复
同意二樓的
vivianfdlpw 2005-08-09
  • 打赏
  • 举报
回复
把它们放在事务中:

set xact_abort on
begin tran

INSERT INTO MyTable(Name,Description)
SELECT Name,Description
FROM MyTable WHERE ID=@ID
--获取最后插入的标识值
SELECT @intID=@@IDENTITY
--修改新复制成的记录 (2)
UPDATE MyTable SET Name='test1' WHERE ID=@intID
--修改被复制的那条记录 (3)
UPDATE MyTable SET Name='test2' WHERE ID=@ID

commit tran
sunqi_790817 2005-08-09
  • 打赏
  • 举报
回复
UPDATE MyTable SET Name='test1' WHERE ID=@intID没执行成功,原因可能是@intID没取到值或值不正确,SELECT @intID=@@IDENTITY改成set @intID=@@IDENTITY试一下

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧