Sql server 存储过程中的不同或相同变量
我有一个问卷的存储过程,它将更新问题、可能的答案和给定的答案。我遇到的问题是,这个问题是真/假、是/否问题,还是有4个可能答案的多项选择题 对于每个可能的答案,我是否需要一个新的变量名,如@PossibleANswert1、@PossibleAnswer2,还是只需要一个 到目前为止,我有:Sql server 存储过程中的不同或相同变量,sql-server,stored-procedures,Sql Server,Stored Procedures,我有一个问卷的存储过程,它将更新问题、可能的答案和给定的答案。我遇到的问题是,这个问题是真/假、是/否问题,还是有4个可能答案的多项选择题 对于每个可能的答案,我是否需要一个新的变量名,如@PossibleANswert1、@PossibleAnswer2,还是只需要一个 到目前为止,我有: BEGIN IF @Question_Type = 1 //a 1 means its a two answer question otherwise it will be a 4 answ
BEGIN
IF @Question_Type = 1 //a 1 means its a two answer question otherwise it will be a 4 answer question
BEGIN
Insert into QUESTIONS
(QuestionType, Question_Text, Questionaire_ID, Filter)--
Values
(@Question_Type, @New_Question, @Questionnaire_ID, @Filter)
select @NewQuestion_ID = SCOPE_IDENTITY()--
insert into Possible_Answers
(Question_ID, Explanation_Required, Review_Required, Possible_Answer_Text, Question_Type)
values
(@NewQuestion_ID, @Explanation,@Review,@Possible_Answer,@Question_Type), // true/false or yes/no
(@NewQuestion_ID, @Explanation,@Review,@Possible_Answer,@Question_Type)
insert into GIVEN_ANSWERS
(Question_ID, Answer_Text, Explanation_Text, Sample_ID)
values
(@NewQuestion_ID, @Given_Answer, @Explanation_Text, @Sample_ID)
END
ELSE
BEGIN
Insert into Questions
(QuestionType, Question_Text, Questionaire_ID, Filter)--
Values
(@Question_Type, @New_Question, @Questionnaire_ID, @Filter)
select @NewQuestion_ID = SCOPE_IDENTITY()
insert into Possible_Answers
(Question_ID, Explanation_Required, Review_Required, Possible_Answer_Text, Question_Type)
values
(@NewQuestion_ID, @Explanation,@Review,@Possible_Answer,@Question_Type), // mulitple choice
(@NewQuestion_ID, @Explanation,@Review,@Possible_Answer,@Question_Type),
(@NewQuestion_ID, @Explanation,@Review,@Possible_Answer,@Question_Type),
(@NewQuestion_ID, @Explanation,@Review,@Possible_Answer,@Question_Type)
insert into GIVEN_ANSWERS
(Question_ID, Answer_Text, Explanation_Text, Sample_ID)
values
(@NewQuestion_ID, @Given_Answer, @Explanation_Text, @Sample_ID)
END
END
我对存储过程相当陌生,所以请随意指出您看到的任何其他错误或糟糕的编码我相信您正在寻找的是一种表用户定义类型。这将允许您以任意数量的列传递任意数量的可能答案
create type dbo.possible_answer as table(
answer nvarchar(max),
explaination nvarchar(max),
review nvarchar(max)
);
create procedure dbo.create_question
@QuestionType int,
....(Other params here)
@PossibleAnswers dbo.possible_answer readonly
as
begin
....(some code)
insert into Possible_Answers
(Question_ID, Explanation_Required, Review_Required, Possible_Answer_Text, Question_Type)
select @NewQuestion_ID,
p.explaination,
p.review,
p.answer,
@Question_Type
from dbo.possible_answer p;
...(other code)
end
谢谢,我不知道为什么我被否决了,但谢谢你的回答,我要试试这个,还有一个朋友建议了一个xml表,其中包含可能的答案,所以我将研究两个方面:根据您的情况,用户定义的类型通常更容易使用,但xml文档更灵活。