Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 存储过程中的不同或相同变量_Sql Server_Stored Procedures - Fatal编程技术网

Sql server 存储过程中的不同或相同变量

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

我有一个问卷的存储过程,它将更新问题、可能的答案和给定的答案。我遇到的问题是,这个问题是真/假、是/否问题,还是有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

我对存储过程相当陌生,所以请随意指出您看到的任何其他错误或糟糕的编码

我相信您正在寻找的是一种表用户定义类型。这将允许您以任意数量的列传递任意数量的可能答案

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文档更灵活。