没分了 急 求Sql存储过程问题

javabuilder9 2007-08-29 08:40:31
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表 这样的存储过程怎么写
...全文
308 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
路人乙e 2007-08-30
  • 打赏
  • 举报
回复
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 2007-08-30
  • 打赏
  • 举报
回复
帮帮我啊 高手
javabuilder9 2007-08-30
  • 打赏
  • 举报
回复
DepartmentID 不是自增的 通过参数传入的
路人乙e 2007-08-30
  • 打赏
  • 举报
回复
create proc insertB
@DepartmentID int,
@ID varchar(20)
as
if substring(@ID,0,1)=',' set @ID=right(@ID,len(@ID)-1)
declare @sql varchar(100)
set @sql=N'select @DepartmentID,sum(a),sum(b),sum(c) into B from A where ID in ('+ @ID +')'
exec @sql
paoluo 2007-08-30
  • 打赏
  • 举报
回复
--或者使用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'
paoluo 2007-08-30
  • 打赏
  • 举报
回复
--如果DepartmentID不是自增列,可以改用charindex,不使用in,這樣就不需要使用動態SQL語句

--創建存儲過程
Create ProceDure SP_TEST(@DepartmentID Int,@ID Varchar(100))
As
Insert B Select @DepartmentID, a, b, c From A Where CharIndex(',' + Cast(ID As Varchar) + ',', ',' + @ID + ',') > 0
GO
--調用
EXEC SP_TEST 1, '1,2,3,4'
paoluo 2007-08-30
  • 打赏
  • 举报
回复
javabuilder9(高守) ( ) 信誉:84 2007-08-30 08:21:27 得分: 0


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


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

仅当使用了列的列表 并且IDENTITY Insert 为on 才能为标识列指定显示值
javabuilder9 2007-08-30
  • 打赏
  • 举报
回复
不行啊 如果按照楼上的 还是提示将
@ID varchar 值 ',1,2,3' 转换为数据类型为 int 的列时发生语法错误。
没有行受影响。
tianbaolong888 2007-08-29
  • 打赏
  • 举报
回复
CREATE PROCEDURE dbo.B_Add
@DepartmentID int,
@IDList varchar(2000)
AS
DECLARE @sql varchar(4000)
SET @sql = 'insert into B select sum(a),sum(b),sum(c) from A where ID in('+@IDList+')'
EXEC(@sql)
javabuilder9 2007-08-29
  • 打赏
  • 举报
回复
如果按照上面的写的话 还是提示必须声明变量 '@DepartmentID'。
yzwmg 2007-08-29
  • 打赏
  • 举报
回复
楼上写的不错!
javabuilder9 2007-08-29
  • 打赏
  • 举报
回复
还是上边的问题
将 varchar 值 '+@IDList+' 转换为数据类型为 int 的列时发生语法错误。
keystudio 2007-08-29
  • 打赏
  • 举报
回复
/*
过程说明:从表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)
Miamiiii 2007-08-29
  • 打赏
  • 举报
回复
断句在哪?
javabuilder9 2007-08-29
  • 打赏
  • 举报
回复
就是 where ID in @ID这个地方出现错误 因为ID为int @ID=,1,2,3为varchar类型
javabuilder9 2007-08-29
  • 打赏
  • 举报
回复
先前两位回答的是可以 只是◎ID=,1,2,3,4 不是int 类型所以转换有些问题
keystudio 2007-08-29
  • 打赏
  • 举报
回复
给例子 给结果 题描述的不清楚
------------------
把A表的内容根据@ID 读取A表的sum(a),sum(b),sum(c)插入B表 把DepartmentID 也插入B表
------------------
断句在哪?
javabuilder9 2007-08-29
  • 打赏
  • 举报
回复
没有人回答麽
WNASP 2007-08-29
  • 打赏
  • 举报
回复
有group吗?
javabuilder9 2007-08-29
  • 打赏
  • 举报
回复
eme915(几米天空) 用你的办法 提示找不到@DepartmentID

必须声明变量 '@DepartmentID'。
usxue(尘飞扬) 用你的办法 @ID为string 类型不是int
加载更多回复(4)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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