日期:2014-05-18  浏览次数:20465 次

没分了 急 求Sql存储过程问题
A表字段     ID   a   b   c  
B表字段     DepartmentID     a   b   c

参数     @DepartmentID,@ID=,1,2,3,4
把A表的内容根据@ID   读取A表的sum(a),sum(b),sum(c)插入B表   把DepartmentID   也插入B表   这样的存储过程怎么写

------解决方案--------------------

create procedure aaaa
@DepartmentID int,
@ID int
as
insert into B select @DepartmentID,sum(a),sum(b),sum(c) from A where ID=@ID


------解决方案--------------------
/*
过程说明:从表B增加数据
创建人:几米天空
创建时间:2007年8月29日
*/
CREATE PROCEDURE dbo.B_Add
@DepartmentID int,
@IDList varchar(2000)
AS
DECLARE @sql varchar(4000)

SET @sql = 'insert into B select @DepartmentID,sum(a),sum(b),sum(c) from A where ID in( '+@IDList+ ') '
EXEC(@sql)

------解决方案--------------------
/*
过程说明:从表B增加数据
创建人:几米天空
创建时间:2007年8月29日
*/
CREATE PROCEDURE dbo.B_Add
@DepartmentID int,
@IDList varchar(2000)
AS
DECLARE @sql varchar(4000)
----加在这
SET @sql = 'insert into B select @DepartmentID,sum(a),sum(b),sum(c) from A where ID in( '+@IDList+ ') '
EXEC(@sql)

----------------------------
加一句
set @IDList = substring(@IDList, 2, len(@IDList)-1)
------解决方案--------------------
A表字段 ID a b c
B表字段 DepartmentID a b c

参数 @DepartmentID,@ID=,1,2,3,4
把A表的内容根据@ID 读取A表的sum(a),sum(b),sum(c)插入B表 把DepartmentID 也插入B表 这样的存储过程怎么写
create proc insertB
@DepartmentID int,
@ID varchar(20)
as
select @DepartmentID,sum(a),sum(b),sum(c) into B from A where ID in ( @ID )

------解决方案--------------------
javabuilder9(高守) ( ) 信誉:84 2007-08-30 08:21:27 得分: 0


DepartmentID 不是自增的 通过参数传入的


--------------
表中的DepartmentID 不是自增的,應該就不會報這個錯誤。

仅当使用了列的列表 并且IDENTITY Insert 为on 才能为标识列指定显示值
------解决方案--------------------
--或者使用like

--創建存儲過程
Create ProceDure SP_TEST(@DepartmentID Int,@ID Varchar(100))
As
Insert B Select @DepartmentID, a, b, c From A Where ', ' + @ID + ', ' Like '%, ' + Cast(ID As Varchar) + ',% '
GO
--調用
EXEC SP_TEST 1, '1,2,3,4 '