【请大家帮忙看看】SQL存储过程插入数据

jy00251278 2008-12-05 04:21:08

Alter PROCEDURE [dbo].[SRCInsertTable] (
@StudentID nvarchar(30),
@ProjectID nvarchar(30)
)
AS

SET NOCOUNT ON

INSERT INTO [SRCTable]
exec [dbo].[SRCSelectTable] @StudentID,@ProjectID


执行代码
exec [dbo].[SRCInsertTable] 'S0001','P0001'

另一个存储过程

Alter PROCEDURE [dbo].[SRCSelectTable] (
@StudentID nvarchar(30),
@ProjectID nvarchar(30)
)
AS

SET NOCOUNT ON

select
PT.StudentID,
PS.ProjectID,
S.SubjectID,
SC.CoursePeriod
from [OLTR_StudyProject] as P
inner join [ProjectRSubject] as PS on P.[ProjectID]=PS.[ProjectID]
inner join [Subject] as S on PS.[SubjectID]=S.[SubjectID]
inner join [SubjectRCourse] as SC on S.[SubjectID]=SC.[SubjectID]
inner join [ProjectRStudent] as PT on P.[ProjectID]=PT.[ProjectID]


我要把存储过程SRCSelectTable里获取的内容全部插入SRCTable表里,用存储过程表示
我这样写应该怎么修改,或者应该怎么写
谢谢了。
...全文
126 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
apple02180503 2008-12-05
  • 打赏
  • 举报
回复


Alter PROCEDURE [dbo].[SRCSelectTable] (
@StudentID nvarchar(30),
@ProjectID nvarchar(30)
)
AS

SET NOCOUNT ON
INSERT INTO [SRCTable](StudentID,ProjectID,SubjectID,CoursePeriod)
select PT.StudentID, PS.ProjectID, S.SubjectID, SC.CoursePeriod
from [OLTR_StudyProject] as P
inner join [ProjectRSubject] as PS on P.[ProjectID]=PS.[ProjectID]
inner join [Subject] as S on PS.[SubjectID]=S.[SubjectID]
inner join [SubjectRCourse] as SC on S.[SubjectID]=SC.[SubjectID]
inner join [ProjectRStudent] as PT on P.[ProjectID]=PT.[ProjectID]
where PS.[SubjectID]=@StudentID and PS.ProjectID=@ProjectID
GO

exec [dbo].[SRCInsertTable] 'S0001','P0001'

yzbsd 2008-12-05
  • 打赏
  • 举报
回复
INSERT INTO [SRCTable] (StudentID,ProjectID,SubjectID,CoursePeriod
) values
(exec [dbo].[SRCSelectTable] @StudentID,@ProjectID)
rucypli 2008-12-05
  • 打赏
  • 举报
回复
INSERT INTO [SRCTable]
select
PT.StudentID,
PS.ProjectID,
S.SubjectID,
SC.CoursePeriod
from [OLTR_StudyProject] as P
inner join [ProjectRSubject] as PS on P.[ProjectID]=PS.[ProjectID]
inner join [Subject] as S on PS.[SubjectID]=S.[SubjectID]
inner join [SubjectRCourse] as SC on S.[SubjectID]=SC.[SubjectID]
inner join [ProjectRStudent] as PT on P.[ProjectID]=PT.[ProjectID]
jy00251278 2008-12-05
  • 打赏
  • 举报
回复
系统提示:插入错误: 列名或所提供值的数目与表定义不匹配。

因为存储过程SRCSelectTable查询出的字段,只是SRCTable表的一部分

如果按照Insert into tables()values()的格式写,也会提示该错误
dobear_0922 2008-12-05
  • 打赏
  • 举报
回复
像1楼那样改成一个存储过程也可以:

Alter   PROCEDURE [dbo].[SRCSelectTable] (
@StudentID nvarchar(30),
@ProjectID nvarchar(30)
)
AS

SET NOCOUNT ON
INSERT INTO [SRCTable]
select PT.StudentID, PS.ProjectID, S.SubjectID, SC.CoursePeriod
from [OLTR_StudyProject] as P
inner join [ProjectRSubject] as PS on P.[ProjectID]=PS.[ProjectID]
inner join [Subject] as S on PS.[SubjectID]=S.[SubjectID]
inner join [SubjectRCourse] as SC on S.[SubjectID]=SC.[SubjectID]
inner join [ProjectRStudent] as PT on P.[ProjectID]=PT.[ProjectID]
where PS.[SubjectID]=@StudentID and PS.ProjectID=@ProjectID
GO

exec [dbo].[SRCInsertTable] 'S0001','P0001'
水族杰纶 2008-12-05
  • 打赏
  • 举报
回复
樓主的變量好像沒用到~~~
dobear_0922 2008-12-05
  • 打赏
  • 举报
回复
--try
Alter PROCEDURE [dbo].[SRCSelectTable] (
@StudentID nvarchar(30),
@ProjectID nvarchar(30)
)
AS

SET NOCOUNT ON

select
PT.StudentID,
PS.ProjectID,
S.SubjectID,
SC.CoursePeriod
from [OLTR_StudyProject] as P
inner join [ProjectRSubject] as PS on P.[ProjectID]=PS.[ProjectID]
inner join [Subject] as S on PS.[SubjectID]=S.[SubjectID]
inner join [SubjectRCourse] as SC on S.[SubjectID]=SC.[SubjectID]
inner join [ProjectRStudent] as PT on P.[ProjectID]=PT.[ProjectID]
where PS.[SubjectID]=@StudentID and PS.ProjectID=@ProjectID
hyde100 2008-12-05
  • 打赏
  • 举报
回复
 select 的时候参数 @StudentID nvarchar(30), @ProjectID nvarchar(30) 怎么没有用到,少写了 where 了吧?
hyde100 2008-12-05
  • 打赏
  • 举报
回复
一个存储过程就可以了
CREATE  PROCEDURE [dbo].[SRCInsertTable] (
@StudentID nvarchar(30),
@ProjectID nvarchar(30)
)
AS

SET NOCOUNT ON

INSERT INTO [SRCTable]
select
PT.StudentID,
PS.ProjectID,
S.SubjectID,
SC.CoursePeriod
from [OLTR_StudyProject] as P
inner join [ProjectRSubject] as PS on P.[ProjectID]=PS.[ProjectID]
inner join [Subject] as S on PS.[SubjectID]=S.[SubjectID]
inner join [SubjectRCourse] as SC on S.[SubjectID]=SC.[SubjectID]
inner join [ProjectRStudent] as PT on P.[ProjectID]=PT.[ProjectID]
GO

exec [dbo].[SRCInsertTable] 'S0001','P0001'

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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