首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

怎么在存储过程中拷贝记录

2012-03-18 
如何在存储过程中拷贝记录有一个BOM表,表中很多记录的一个关键字(比如product_id)都是一样的值(比如都是“A

如何在存储过程中拷贝记录
有一个BOM表,表中很多记录的一个关键字(比如product_id)都是一样的值(比如都是“AAA”)
我想新建记录,直接从所有“AAA”的记录拷贝到“BBB”
用存储过程如何写?

SQL code
CREATE PROCEDURE [dbo].[CopyNode](    @product_id varchar(25),    @product_id_new varchar(25))ASdeclare @lft intdeclare @rgt intif exists(select product_id from BOM where product_id = @product_id)    begin        SET XACT_ABORT ON        BEGIN TRANSACTION            select * from BOM where product_id = @product_id                           //如何写呢?            //insert into BOM where product_id = @product_id        COMMIT TRANSACTION        SET XACT_ABORT OFF    end


[解决办法]
select * from BOM where product_id = @product_id
//如何写呢?
//insert into BOM where product_id = @product_id
:
insert into bom
select 除了product_id 列外的其他所有列,'BBB'
from bom where product_id='AAA'

注意上面product_id在字段列表中的位置.
[解决办法]
SQL code
SET XACT_ABORT ONBEGIN TRANSACTION insert into BOM select @product_id_new,[product_id外的其他字段]    from BOM where product_id = @product_idCOMMIT TRANSACTION
[解决办法]
SQL code
insert into BOM select @product_id_new,其他字段 from BOM where product_id = @product_id
[解决办法]
SET XACT_ABORT ON
BEGIN TRANSACTION
 insert into BOM
 select @product_id_new,[product_id外的其他字段] 
from BOM where product_id = @product_id
COMMIT TRANSACTION

热点排行