如何加载数据以及将数据与存储过程一起插入

时间:2018-11-12 12:23:58

标签: sql-server tsql

我需要先加载数据,然后再将数据插入同一张表中。

我使用存储过程加载数据(我正在使用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

问题在于,不应在第二个存储过程questionidemployeeid中插入,而已将其插入,以将employeeid链接到questionid。但是,当我想为此添加scorecomment时,我收到一个错误,指出需要插入questionidemployeeid(否则它的值为{{1} }。还有一个问题是我的第二个存储过程不知道哪个问题属于NULL / questionid。我希望有人能理解这一点,我知道这有点奇怪。

1 个答案:

答案 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

结束交易   承诺 结束