我需要先加载数据,然后再将数据插入同一张表中。
我使用存储过程加载数据(我正在使用SQL Server):
@employeeid int,
@thequestion varchar (220) output
)
as
begin
begin transaction
select @thequestion = thequestion
from question q
join contentment c on q.questionid= c.questionid
where c.employeeid = @employeeid
if @@ERROR <> 0
begin
rollback
raiserror ('You don't have question to answer', 16, 1)
return
end
commit
end
然后,用户可以将数据添加到表内容中。他只能添加分数和评论
Contentment
表:
employeeid,
questionid,
date,
score,
comment
我正在使用此存储过程:
(@score int,
@comment varchar(50),
@date date
)
as
begin
begin transaction
insert into contentment (date, score, comment)
values (@date, @score, @comment)
if @@ERROR <> 0
begin
rollback
raiserror ('-some error-', 16, 1)
return
end
commit
end
问题在于,不应在第二个存储过程questionid
和employeeid
中插入,而已将其插入,以将employeeid
链接到questionid
。但是,当我想为此添加score
和comment
时,我收到一个错误,指出需要插入questionid
和employeeid
(否则它的值为{{1} }。还有一个问题是我的第二个存储过程不知道哪个问题属于NULL
/ questionid
。我希望有人能理解这一点,我知道这有点奇怪。
答案 0 :(得分:1)
对不起,我正忙于旅行。
我尝试如下创建第二个过程。
在这里,我创建了employeeid和Questionid作为2个变量,我们将在执行此存储过程时将它们传递给它们:
create procedure Proc2
( @employeeid int ,@ questionid int ,@ score int ,@评论varchar(50) ,@日期 ) 如 开始 开始交易 插入知足状态(日期,分数,评论) 选择@date =日期,@ score =得分,@ comment =评论 其中employeeid = @employeeid和questionid = @questionid
if @@ERROR <> 0
begin
rollback
raiserror ('-some error-', 16, 1)
return
end
结束交易 承诺 结束