不解釋了,看實(shí)際SQL
-- =============================================
-- Author:  <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[P_DraftNew] 
(
   @SourceId int,
   @StyleId int,
   @ThemeId int,
   @ResTypeId int,
   @ResLength int,
   @Title varchar(200),
   @OtherSource varchar(200),
   @Years datetime,
   @Author varchar(100),
   @UserId int,
   @CreateDate datetime,
   @LibLevel int,
   @FileType1 int,
   @Hashcode1 varchar(1024),
   @FilePath1 varchar(100),
   @FileType2 int,
   @Hashcode2 varchar(1024),
   @FilePath2 varchar(100),
   
   --@OriginResId", SqlDbType.Int,4),
   --@ResTypeId", SqlDbType.Int,4),
   @BeginTime decimal,
   @EndTime decimal,
   @ResText varchar(2000),
   @Readability VarChar(200),
   --@LibLevel", SqlDbType.Int,4),
   @KeyWord VarChar(100),
   @DiffLevel Int,
   --@UserId", SqlDbType.Int,4),
   --@CreateDate", SqlDbType.DateTime),
   @Remark VarChar(2000),
   @UseTimes Int,
   --@LastUseDate DateTime,
   @PlayBeginTime Decimal,
   @PlayEndTime Decimal,
   --@FileId", SqlDbType.Int,4),
   @Status Int,
   @IncludeAnchor Bit,
   @CurrentOperatorId Int
)
AS
declare @Res_OriginId int;
declare @Res_FileId int;
declare @ResId int
BEGIN
SET NOCOUNT ON;
--@@開(kāi)始添加資源
--添加1
insert into Res_OriginInfo(SourceId,StyleId,ThemeId,ResTypeId,ResLength,Title,OtherSource,Years,
   Author,UserId,CreateDate,LibLevel) values ( @SourceId,@StyleId,@ThemeId,@ResTypeId,
   @ResLength,@Title,@OtherSource,@Years,@Author,@UserId,getdate(),@LibLevel );
--得到ID
set @Res_OriginId = @@IDENTITY    
--添加2
if @FilePath1 <> '' 
 begin
  insert into Res_File(OriginResId,FileType,Hashcode,FilePath)
   values (@Res_OriginId,@FileType1,@Hashcode1,@FilePath1);
  if @FileType1 = 0
   begin
    set @Res_FileId = @@IDENTITY
  end
 end
if @FilePath2 <> '' 
 begin
  insert into Res_File(OriginResId,FileType,Hashcode,FilePath)
   values (@Res_OriginId,@FileType2,@Hashcode2,@FilePath2);
  if @FileType2 = 0
   begin
    set @Res_FileId = @@IDENTITY
   end
 end  
--添加3
insert into Res_Info(OriginResId,ResTypeId,BeginTime,EndTime,ResText,Readability,LibLevel,
   KeyWord,DiffLevel,UserId,CreateDate,Remark,UseTimes,LastUseDate,PlayBeginTime,
   PlayEndTime,FileId,Status,IncludeAnchor,CurrentOperatorId)
            select 
            @Res_OriginId,@ResTypeId,@BeginTime,@EndTime,@ResText,@Readability,@LibLevel,
            @KeyWord,@DiffLevel,@UserId,getdate(),@Remark,@UseTimes,getdate(),@PlayBeginTime,
            @PlayEndTime,@Res_FileId,@Status,@IncludeAnchor,@CurrentOperatorId;
set @ResId = @@IDENTITY
--@@資源添加完畢
   
--@@開(kāi)始為該資源添加默認(rèn)的命題記錄
-- PS:
--     1:Res_Info表
--     2:根據(jù)ResId在Res_QTypeGroup找到GroupId,這個(gè)表是用來(lái)綁定命題的
--     3:根據(jù)GroupId,在Question_Group_Type中找到QuestionTypeId,這個(gè)表示是復(fù)合題題型名稱(chēng)
--     ==
--     1:添加一條記錄,首先在Res_Info中添加一條記錄;
--     2:根據(jù)ResId在Res_QTypeGroup找到GroupId,有可能存在多個(gè)GroupId,然后根據(jù)
--        GroupId,再在Question_Complex_Group添加對(duì)應(yīng)的記錄;
--     3:根據(jù)ResId在Res_QTypeGroup找到GroupId,根據(jù)GroupId,在Question_Group_Type,
--     找到該GoupId對(duì)應(yīng)的復(fù)合題題型組合,再去相應(yīng)的業(yè)務(wù)表去添加記錄。
--    PS:發(fā)現(xiàn)根本不用這么復(fù)雜,直接根據(jù)ResTypeId在Question_Type中找到具體題型
--     4:真正命題的時(shí)候只要去Update各業(yè)務(wù)表就行。
  
---- 負(fù)責(zé)插入Question_Complex_Group
declare @GroupId int
declare @QuestionGroupIdTemp int
declare @QuestionTypeIdTemp int
declare @ComplexIdTemp int
declare @PropCount int
declare @TypeBlockIdTemp int
declare @PropCountTemp int
declare @QSBlockIdTemp int
declare @BaseTypeIdTemp int
declare @QuestionIdTemp int
set @PropCount=0
declare group_cursor cursor for
select GroupId from Res_QTypeGroup where ResTypeId=@ResTypeId
open group_cursor
fetch next from group_cursor
into @GroupId
while @@FETCH_STATUS = 0
 begin
  insert into  Question_Complex_Group (ResId, GroupId, UserId,
     UserName, RefreshDate, Remark, AccountID, IsAssigned, Status, 
     CurrentOperatorId, CreateDate, IsNeedRecord, 
     IsChecked) values (@ResId, @GroupId, @UserId, @Author, getdate(),
     '', 0, 1, 0, @UserId,getdate(), 1, 1)
  set @QuestionGroupIdTemp = @@IDENTITY
  --此處開(kāi)始第二個(gè)游標(biāo)
  declare Group_Type_Cursor cursor for
  select QuestionTypeId from  Question_Group_Type where GroupId=@GroupId
  open  Group_Type_Cursor
  fetch next from Group_Type_Cursor
  into @QuestionTypeIdTemp
  while @@FETCH_STATUS = 0
   begin
    --插入記錄到Question_Complex
    insert into Question_Complex (QuestionTypeId, Description, Glossary,ComplexTitle,
       OriginResId,  ResId, QuestionGroupId,IsAnchor,  IsNew) values 
       (@QuestionTypeIdTemp, '', '', '', @Res_OriginId,  @ResId, @QuestionGroupIdTemp, 0,  1)     
    set @ComplexIdTemp = @@IDENTITY     
    --計(jì)算每個(gè)題型需要命多少題
    declare TypeBlock_Cursor CURSOR FOR
    select TypeBlockId from Question_Type_Block where QuestionTypeId=@QuestionTypeIdTemp and ResTypeId=@ResTypeId
    open TypeBlock_Cursor
    fetch next from TypeBlock_Cursor
    into @TypeBlockIdTemp  
    while @@FETCH_STATUS = 0
     begin    
      select @PropCountTemp=MaxCount, @BaseTypeIdTemp=BaseTypeId from  Question_Type_List where TypeBlockId=@TypeBlockIdTemp
      --對(duì)題數(shù)進(jìn)行累加
      set @PropCount=@PropCount+@PropCountTemp
      --插入記錄到Question_Complex_Block,一個(gè)BlockType,在這個(gè)表中就要對(duì)應(yīng)一條記錄
      insert into Question_Complex_Block(ComplexId, IsAll, BeginTime, EndTime) values 
         (@ComplexIdTemp, 1, 0, 0)
      set @QSBlockIdTemp=@@IDENTITY       
      --開(kāi)始分類(lèi)別進(jìn)行插入Complex_Info,ChoiceVice等表,要根據(jù)題型的不同插入的內(nèi)容也不同
      --@PropCountTemp為幾,就在Complex_Info插入幾條記錄
      while @PropCountTemp > 0
       begin
        insert into Question_Info (ComplexId, BaseTypeId, QSBlockId, QuestionTitle,
           JudgeAnswer, CtrlId, LinkInfo, StandardAnswer, FillAnswer, ReadRecordId) 
           values (@ComplexIdTemp, @BaseTypeIdTemp, @QSBlockIdTemp, '默認(rèn)題面',
           0,'','','','','')
        set @QuestionIdTemp=@@IDENTITY
        ----音頻短篇選擇0,音頻中篇選擇1,視頻選擇4,仔細(xì)閱讀7,快速閱讀8,音頻短篇(六級(jí))9,
        ----音頻中篇對(duì)話(六級(jí))10,音頻中篇(六級(jí))11,視頻選擇(六級(jí))12,快速閱讀(六級(jí))15,
        ----仔細(xì)閱讀(六級(jí))16,還要插入插入一個(gè)附表ChoiceVice
        if @BaseTypeIdTemp<2
         begin
          insert into  Question_ChoiceVice (QuestionId, ChoiceTitle,IsAnswer) 
             values (@QuestionIdTemp, '選項(xiàng)1', 1)
          insert into  Question_ChoiceVice (QuestionId, ChoiceTitle,IsAnswer) 
             values (@QuestionIdTemp, '選項(xiàng)2', 0)
          insert into  Question_ChoiceVice (QuestionId, ChoiceTitle,IsAnswer) 
             values (@QuestionIdTemp, '選項(xiàng)3', 0)
          insert into  Question_ChoiceVice (QuestionId, ChoiceTitle,IsAnswer) 
             values (@QuestionIdTemp, '選項(xiàng)4', 0)
         end         
        set @PropCountTemp=@PropCountTemp-1
       end
      --end 分類(lèi)別進(jìn)行插入
      fetch next from TypeBlock_Cursor
      into @TypeBlockIdTemp  
     end
    close TypeBlock_Cursor
    deallocate TypeBlock_Cursor
    --計(jì)算結(jié)束
     
    --插入記錄到Question_Complex_Validate
    insert into Question_Complex_Validate(ComplexId, MsgUndone, PropCount, FinishedCount, 
     IsPropDone) values (@ComplexIdTemp, '尚未命題', @PropCount, 0, 0)
          
    set @PropCount=0
    fetch next from Group_Type_Cursor
    into @QuestionTypeIdTemp
   end
   close Group_Type_Cursor
   deallocate Group_Type_Cursor 
   --end 第二個(gè)游標(biāo)
     
   fetch next from group_cursor
   into @GroupId
  end
 close group_cursor
 deallocate group_cursor
 ----end負(fù)責(zé)插入Question_Complex_Group
  
   --@@命題記錄添加完畢
end