2014-10-29 103 views
0

我有一个问卷存储过程,用于更新问题,可能的答案和给出的答案。我遇到的问题是如果问题是真/假或是/否问题,或者有4个可能答案的多项选择问题。存储过程中的不同或相同变量

对于每个可能的答案,我是否需要一个新的变量名称,如@ PossibleANswert1,@ PossibleAnswer2或者我可以只有一个吗?

我有这个至今:

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 

我是相当新的存储过程,所以请随时拨打任何其他错误或糟糕的编码看到

回答

0

我相信你在找什么for是一个表用户定义的类型。这将允许您通过任意数量的列传递任意数量的可能答案。

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 
+0

谢谢,不知道为什么,我得到downvoted,但感谢你回答,我要试试这个,也是一个朋友建议有可能的答案的XML表,所以我要寻找到双方 – 2014-10-29 15:25:03

+0

根据您的情况,用户定义的类型通常更容易处理,但XML文档更加灵活。 – Will 2014-10-29 15:27:56

相关问题