0

私は2つのプロシージャを持っています procgetid,insertmarks.procgetid はinsertmarksプロシージャで使用されるint値を返します

code in procgetid procedure:

ALTER procedure [dbo].[procgetid](@sid int output)
as  
begin
select @sid=(select isnull(max(id),0)+100 from test2);
return @sid
end

code in insertmarks procedure:

ALTER procedure [dbo].[insertmarks](@sub1 int,@sub2 int,@sub3 int)
as 
declare @student_id int
begin
exec @student_id = procgetid
insert into marks values(@sub1,@sub2,@sub3,@student_id)
end 

insertmarks プロシージャの実行中に、「値 NULL を列 'student_id' に挿入できません。列は null を許可しません。INSERT が失敗しました。」というエラーが表示されました。

4

1 に答える 1

3
ALTER procedure [dbo].[insertmarks](@sub1 int,@sub2 int,@sub3 int)
as 
declare @student_id int

begin set @student_id = exec [スキーマ名].procgetid
マークに挿入 値(@sub1,@sub2,@sub3,@student_id) end

于 2013-04-03T11:45:36.063 に答える