存储过程重复结果

时间:2015-05-06 15:50:33

标签: sql caching stored-procedures duplicates

我正在调用两次存储过程,它给了我奇怪的结果。 存储过程的目标是创建一个加载了数据的检查。它有char(1)参数传递'A'或'B'所以当我调用存储过程时它看起来像:

Execute Create_Test 'A'
Execute Create_Test 'B'

它工作正常,它创建了两个测试。 char(1)告诉它从数据库中提取哪些标记为'A'或'B'的问题也可以。但是,如果顺序调用这两个存储过程,则会导致一些问题。第一个存储过程由于某种原因将运行两次,但只有一部分会运行。

以下是存储过程中的内容:

-- Code that creates @intTestID is up here and does things    

--Add Question Records
Insert Into Question (Test_ID, Question_Text, Question_Type_ID, Question_Stem_ID)
Select @intTestID as Test_ID, Question as Question_Text, Question_Type_ID, Question_Stem_ID
From Question_Stem
Where TestCreationProcessID = @pintTestCreationProcessID and Test_Form = @pstrForm --(or 'B' if passed)

--Add Answer Records
Insert Into Answer (Question_ID, Answer_Text, isCorrect, Question_Stem_Answer_ID)
Select Question_ID, Answer as Answer_Text, isCorrect, QSA.Question_Stem_Answer_ID
From Question_Stem_Answer QSA
    Inner Join Question Q On Q.Question_Stem_ID = QSA.Question_Stem_ID
    Inner Join Test T On Q.Test_ID = T.Test_ID and T.isActive=1
Where T.TestCreationProcessID = @pintTestCreationProcessID

这导致创建了两个测试,但测试'A'将重复所有答案。因此,它有8个答案,而不是4个答案。其他4个总是与前4个相同。问题本身不会最终重复,这完全是奇怪的。

如果我选择“Create_Test'A'”然后运行它,然后选择“Create_Test'B'”然后运行它,它不会复制任何一种形式的答案。只有当我突出显示它们并运行它们时,它们才会复制答案。

更多信息: 这是两次创造'A'的答案。第一次'A'的所有答案都按顺序创建。因此ID 1-100将是属于'A'的唯一答案。当'B'运行时,它会再次创建所有'A的答案'和'B'的答案同时导致Answer_ID 101-300在'A'和'B'答案之间混合。

应该做什么,1-100属于'A',101-200属于'B'

我认为这可能是某些缓存的结果,但如果是这样,那为什么问题也不会显示两次?它也只是首先被称为重复的存储过程。他们独立地运行良好,一起(这是非常可取的)他们复制。

我尝试创建两个存储过程Create_Test_A和Create_Test_B并连续运行它们。发生相同的重复。我试过在这些之间睡一觉,但没有用。老实说,我不想要一个解决方案(虽然我可能必须这样做)我更喜欢一个解决方案。对我来说,这是一个非常有趣的事件。我和其他一些以前从未见过这种情况的开发者交谈过。

很抱歉,如果这真的令人困惑,我尽力解释发生了什么。如果您需要更多信息,我会尽可能提供。

0 个答案:

没有答案