zoukankan      html  css  js  c++  java
  • Excle生成T层加工ODS层存储过程

     

    Private Sub Create_SQL_Click()
        
        Dim v_target_sql As String '用于目标表INSERT字段并接
        Dim v_source_sql As String '用于源表SELECT字段并接
        Dim v_target_col_sql As String '用于目标表SELECT字段并接
        Dim v_where_sql As String '用于多个字段关联条件并接
        Dim v_where_col_num As String '用于单个字段空值判断
        
        Set mysheet1 = Workbooks(ThisWorkbook.Name).Sheets(1) '说明
        Set mysheet2 = Workbooks(ThisWorkbook.Name).Sheets(2) '数据字典
        
        Set FSO = CreateObject("Scripting.FileSystemObject")
        
        '建目录
        If FSO.FolderExists(ThisWorkbook.Path & "DB") = False Then '判断文件夹是否存在
           FSO.CreateFolder (ThisWorkbook.Path & "DB")
           FSO.CreateFolder (ThisWorkbook.Path & "DBDBS")
           FSO.CreateFolder (ThisWorkbook.Path & "DBDBS" & mysheet1.Range("B2").Value & "")
           FSO.CreateFolder (ThisWorkbook.Path & "DBDBS" & mysheet1.Range("B2").Value & "Procedures")
           FSO.CreateFolder (ThisWorkbook.Path & "DBPATCH")
           
           '建总调角本
           Set Fcreate_run = FSO.CreateTextFile(ThisWorkbook.Path & "DBPATCH
    un.sql", True)
           Fcreate_run.WriteLine ("-- Create Procedures ")
           Fcreate_run.Close
           Set Fcreate_run = Nothing
           
        End If
        
        '建立角本文件
        For i = 2 To mysheet2.UsedRange.Rows.Count '遍历所有的列
            If mysheet1.Range("B1").Value = mysheet2.Range("P" & i).Value Then '判断版本
               If mysheet2.Range("A" & i).Value <> mysheet2.Range("A" & i - 1).Value Then '判断是否存储过程开始
                  Set Fcreate = FSO.CreateTextFile(ThisWorkbook.Path & "DBDBS" & mysheet1.Range("B2").Value & "Procedures" & mysheet2.Range("A" & i).Value & ".prc", True)
                  Fcreate.Close
                  Set Fcreate = Nothing
                  
                  '建总调角本
                  Set Fcreate_run = FSO.OpenTextFile(ThisWorkbook.Path & "DBPATCH
    un.sql", 8, False)
                  Fcreate_run.WriteLine ("@../DBS/" & mysheet1.Range("B2").Value & "/Procedures/" & mysheet2.Range("A" & i).Value & ".prc")
                  Fcreate_run.Close
                  Set Fcreate_run = Nothing
               End If '判断是否存储过程开始
            End If '判断版本
        Next i
        
        
        '增加存储过程头
        For i = 2 To mysheet2.UsedRange.Rows.Count '遍历所有的列
            If mysheet1.Range("B1").Value = mysheet2.Range("P" & i).Value Then '判断版本
               If mysheet2.Range("A" & i).Value <> mysheet2.Range("A" & i - 1).Value Then '判断是否存储过程开始
                  Set Fopen = FSO.OpenTextFile(ThisWorkbook.Path & "DBDBS" & mysheet1.Range("B2").Value & "Procedures" & mysheet2.Range("A" & i).Value & ".prc", 8, False)
                  
                  Fopen.WriteLine ("create or replace procedure " & mysheet1.Range("B2").Value & "." & mysheet2.Range("A" & i).Value & "(P_I_DATE   IN VARCHAR2,")
                  Fopen.WriteLine ("                            P_O_RESULT OUT VARCHAR2) is")
                  Fopen.WriteLine (" /*====================================================================+")
                  Fopen.WriteLine ("   版权信息:版权所有(c) 2012,RESOFT")
                  Fopen.WriteLine ("   作业名称:" & mysheet2.Range("A" & i).Value & "")
                  Fopen.WriteLine ("   责任人  : 杨奕彬")
                  If mysheet2.Range("Q" & i).Value = "T1" Then
                     Fopen.WriteLine ("   功能描述: 增量事件类加载算法")
                  ElseIf mysheet2.Range("Q" & i).Value = "T2" Then
                     Fopen.WriteLine ("   功能描述: 全量登记簿类加载算法")
                  ElseIf mysheet2.Range("Q" & i).Value = "T3" Then
                     Fopen.WriteLine ("   功能描述: 状态类不带删除标识拉链加载算法")
                  ElseIf mysheet2.Range("Q" & i).Value = "T4" Then
                     Fopen.WriteLine ("   功能描述: 状态类带删除标识拉链加载算法")
                  End If
                  Fopen.WriteLine ("   需求来源: ")
                  Fopen.WriteLine ("   目标表  : " & mysheet2.Range("B" & i).Value & "." & mysheet2.Range("C" & i).Value & "  " & mysheet2.Range("D" & i).Value & "")
                  Fopen.WriteLine ("   源表    : " & mysheet2.Range("J" & i).Value & "." & mysheet2.Range("K" & i).Value & "  " & mysheet2.Range("L" & i).Value & "")
                  Fopen.WriteLine ("   版本号  : V1.0")
                  If mysheet2.Range("Q" & i).Value = "T1" Then
                     Fopen.WriteLine ("   加载策略: 事件类,仅增加,无删")
                  ElseIf mysheet2.Range("Q" & i).Value = "T2" Then
                     Fopen.WriteLine ("   加载策略: 登记簿类,全量,无删")
                  ElseIf mysheet2.Range("Q" & i).Value = "T3" Then
                     Fopen.WriteLine ("   加载策略: 状态类,全量、增量,无删")
                  ElseIf mysheet2.Range("Q" & i).Value = "T4" Then
                     Fopen.WriteLine ("   加载策略: 状态类,全量、无删,对于当天缺少的数据打上删除标识")
                  End If
                  Fopen.WriteLine ("   修改历史: V1.0")
                  Fopen.WriteLine ("   版本     更改日期:              更改人             更改说明")
                  Fopen.WriteLine ("   V1.0     2017.05.10             杨奕彬             create")
                  Fopen.WriteLine ("  =======================================================================*/")
               
                  Fopen.WriteLine (" V_DATA_DATE  VARCHAR2(8);")
                  Fopen.WriteLine (" V_STEP       VARCHAR2(10) := '0';")
                  Fopen.WriteLine (" V_SUCCESS    VARCHAR2(10) := 'SUCCESS';")
                  Fopen.WriteLine (" V_FAILED     VARCHAR2(10) := 'FAILED';")
                  Fopen.WriteLine (" V_START_TIME VARCHAR2(100);")
                  Fopen.WriteLine (" V_END_TIME   VARCHAR2(100);")
                  Fopen.WriteLine (" V_PROC_NAME  VARCHAR2(100);")
                  Fopen.WriteLine (" V_TABLE_NAME VARCHAR2(30);")
                  Fopen.WriteLine (" V_SCHEMA     VARCHAR2(8);")
                  Fopen.WriteLine (" V_EDATE      VARCHAR2(8);")
                  Fopen.WriteLine ("")
                  Fopen.WriteLine ("BEGIN")
                  Fopen.WriteLine ("")
                  Fopen.WriteLine ("  V_DATA_DATE  := P_I_DATE;")
                  Fopen.WriteLine ("  P_O_RESULT   := V_SUCCESS;")
                  Fopen.WriteLine ("  V_PROC_NAME  := '" & mysheet1.Range("B2").Value & "." & mysheet2.Range("A" & i).Value & "';")
                  Fopen.WriteLine ("  V_TABLE_NAME := '" & mysheet2.Range("C" & i).Value & "';")
                  Fopen.WriteLine ("  V_START_TIME := TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF');")
                  Fopen.WriteLine ("  V_SCHEMA     := '" & mysheet2.Range("B" & i).Value & "';")
                  Fopen.WriteLine ("  V_EDATE      := '99991231';")
                  Fopen.WriteLine ("")
               
               
                  Fopen.Close
                  Set Fopen = Nothing
               End If '判断是否存储过程开始
            End If '判断版本
        Next i
        
        '增加步骤1  数据恢复 T1T2T3T4
        For i = 2 To mysheet2.UsedRange.Rows.Count '遍历所有的行
            If mysheet1.Range("B1").Value = mysheet2.Range("P" & i).Value Then '判断版本
               '针对表第一条记录处理
               If mysheet2.Range("A" & i).Value <> mysheet2.Range("A" & i - 1).Value Then '判断表第一条记录
                  Set Fopen = FSO.OpenTextFile(ThisWorkbook.Path & "DBDBS" & mysheet1.Range("B2").Value & "Procedures" & mysheet2.Range("A" & i).Value & ".prc", 8, False)
                  
                  If mysheet2.Range("Q" & i).Value = "T1" Then '增量事件类加载算法
                     Fopen.WriteLine ("  --支持重跑,删除当日数据")
                     Fopen.WriteLine ("  V_STEP := '删除当日数据';")
                     Fopen.WriteLine ("  DELETE FROM " & mysheet2.Range("B" & i).Value & "." & mysheet2.Range("C" & i).Value & "")
                     Fopen.WriteLine ("  WHERE DATA_DATE ='V_DATA_DATE';")
                     Fopen.WriteLine ("  COMMIT;")
                  ElseIf mysheet2.Range("Q" & i).Value = "T2" Then '全量登记簿类加载算法
                     Fopen.WriteLine ("  --支持重跑,清空目标表数据")
                     Fopen.WriteLine ("  V_STEP := '清空目标表数据';")
                     Fopen.WriteLine ("  EXECUTE IMMEDIATE 'TRUNCATE TABLE " & mysheet2.Range("B" & i).Value & "." & mysheet2.Range("C" & i).Value & "';")
                  ElseIf mysheet2.Range("Q" & i).Value = "T3" Then '状态类不带删除标识拉链加载算法
                     Fopen.WriteLine ("  --支持重跑,删除开始日期大于等于数据日期的记录")
                     Fopen.WriteLine ("  V_STEP := '删除开始日期大于等于数据日期的记录';")
                     Fopen.WriteLine ("  DELETE FROM " & mysheet2.Range("B" & i).Value & "." & mysheet2.Range("C" & i).Value & "")
                     Fopen.WriteLine ("  WHERE START_DATE>='V_DATA_DATE';")
                     Fopen.WriteLine ("  COMMIT;")
                     Fopen.WriteLine ("")
                     Fopen.WriteLine ("  --支持重跑,将end_date大于当天且不为99991231更新为99991231")
                     Fopen.WriteLine ("  V_STEP := '将end_date大于当天且不为99991231开链';")
                     Fopen.WriteLine ("  UPDATE " & mysheet2.Range("B" & i).Value & "." & mysheet2.Range("C" & i).Value & "")
                     Fopen.WriteLine ("     SET END_DATE=V_EDATE")
                     Fopen.WriteLine ("   WHERE END_DATE >= TO_CHAR(TO_DATE(V_DATA_DATE,'YYYYMMDD')-1,'YYYYMMDD')")
                     Fopen.WriteLine ("     AND END_DATE <> V_EDATE;")
                     Fopen.WriteLine ("  COMMIT;")
                  ElseIf mysheet2.Range("Q" & i).Value = "T4" Then '状态类带删除标识拉链加载算法
                     Fopen.WriteLine ("  --支持重跑,删除开始日期大于等于数据日期的记录")
                     Fopen.WriteLine ("  V_STEP := '删除开始日期大于等于数据日期的记录';")
                     Fopen.WriteLine ("  DELETE FROM " & mysheet2.Range("B" & i).Value & "." & mysheet2.Range("C" & i).Value & "")
                     Fopen.WriteLine ("  WHERE START_DATE>='V_DATA_DATE';")
                     Fopen.WriteLine ("  COMMIT;")
                     Fopen.WriteLine ("")
                     Fopen.WriteLine ("  --支持重跑,将end_date大于当天且不为99991231更新为99991231")
                     Fopen.WriteLine ("  V_STEP := '将end_date大于当天且不为99991231开链';")
                     Fopen.WriteLine ("  UPDATE " & mysheet2.Range("B" & i).Value & "." & mysheet2.Range("C" & i).Value & "")
                     Fopen.WriteLine ("     SET END_DATE=V_EDATE")
                     Fopen.WriteLine ("   WHERE END_DATE >= TO_CHAR(TO_DATE(V_DATA_DATE,'YYYYMMDD')-1,'YYYYMMDD')")
                     Fopen.WriteLine ("     AND END_DATE <> V_EDATE;")
                     Fopen.WriteLine ("  COMMIT;")
                  End If
               
                  Fopen.WriteLine ("")
               
                  Fopen.Close
                  Set Fopen = Nothing
               End If '判断表第一条记录
            End If '判断版本
        Next i
        
         '增加步骤2 中间表处理 清空临时表 T1T2T3T4
        For i = 2 To mysheet2.UsedRange.Rows.Count '遍历所有的行
            If mysheet1.Range("B1").Value = mysheet2.Range("P" & i).Value Then '判断版本
               '针对表第一条记录处理
               If mysheet2.Range("A" & i).Value <> mysheet2.Range("A" & i - 1).Value Then '判断表第一条记录
                  Set Fopen = FSO.OpenTextFile(ThisWorkbook.Path & "DBDBS" & mysheet1.Range("B2").Value & "Procedures" & mysheet2.Range("A" & i).Value & ".prc", 8, False)
               
                  If mysheet2.Range("Q" & i).Value = "T1" Then '增量事件类加载算法
                     Fopen.WriteLine ("  --清空临时表数据")
                     Fopen.WriteLine ("  V_STEP := '清空临时表数据';")
                     Fopen.WriteLine ("  EXECUTE IMMEDIATE 'TRUNCATE TABLE " & mysheet2.Range("B" & i).Value & "." & mysheet2.Range("C" & i).Value & "_TMP1';")
                  ElseIf mysheet2.Range("Q" & i).Value = "T2" Then '全量登记簿类加载算法
                     Fopen.WriteLine ("  --清空临时表数据")
                     Fopen.WriteLine ("  V_STEP := '清空临时表数据';")
                     Fopen.WriteLine ("  EXECUTE IMMEDIATE 'TRUNCATE TABLE " & mysheet2.Range("B" & i).Value & "." & mysheet2.Range("C" & i).Value & "_TMP1';")
                  ElseIf mysheet2.Range("Q" & i).Value = "T3" Then '状态类不带删除标识拉链加载算法
                     Fopen.WriteLine ("  --清空临时表数据")
                     Fopen.WriteLine ("  V_STEP := '清空临时表数据';")
                     Fopen.WriteLine ("  EXECUTE IMMEDIATE 'TRUNCATE TABLE " & mysheet2.Range("B" & i).Value & "." & mysheet2.Range("C" & i).Value & "_TMP1';")
                  ElseIf mysheet2.Range("Q" & i).Value = "T4" Then '状态类带删除标识拉链加载算法
                     Fopen.WriteLine ("  --清空临时表数据")
                     Fopen.WriteLine ("  V_STEP := '清空临时表数据';")
                     Fopen.WriteLine ("  EXECUTE IMMEDIATE 'TRUNCATE TABLE " & mysheet2.Range("B" & i).Value & "." & mysheet2.Range("C" & i).Value & "_TMP1';")
                  End If
               
                  Fopen.WriteLine ("")
               
                  Fopen.Close
                  Set Fopen = Nothing
               End If '判断表第一条记录
            End If '判断版本
        Next i
        
        '增加步骤3 增量剥离后的数据插入中间表
        '源表-目标表
        For i = 2 To mysheet2.UsedRange.Rows.Count '遍历所有的行
            If mysheet1.Range("B1").Value = mysheet2.Range("P" & i).Value Then '判断版本
               If mysheet2.Range("A" & i).Value <> mysheet2.Range("A" & i - 1).Value Then '表第一条记录处理
               
                  If mysheet2.Range("Q" & i).Value = "T1" Then '增量事件类加载算法
                     'INSERT TABLE加工 第一个要插入的目标字段
                     v_target_sql = "  INSERT INTO " & mysheet2.Range("B" & i).Value & "." & mysheet2.Range("C" & i).Value & "_TMP1" & vbCrLf
                     v_target_sql = v_target_sql & "  (" & mysheet2.Range("F" & i).Value & "  --" & mysheet2.Range("G" & i).Value & "" & vbCrLf
                     'SELECT 加工 第一个SELECT字段
                     v_source_sql = "   SELECT " & mysheet2.Range("M" & i).Value & "  --" & mysheet2.Range("N" & i).Value & "" & vbCrLf
                  ElseIf mysheet2.Range("Q" & i).Value = "T2" Then '全量登记簿类加载算法
                     'INSERT TABLE加工 要插入的目标字段
                     v_target_sql = "  INSERT INTO " & mysheet2.Range("B" & i).Value & "." & mysheet2.Range("C" & i).Value & "_TMP1" & vbCrLf
                     v_target_sql = v_target_sql & "  (" & mysheet2.Range("F" & i).Value & "  --" & mysheet2.Range("G" & i).Value & "" & vbCrLf
                     'SELECT 加工 第一个SELECT字段
                     v_source_sql = "   SELECT " & mysheet2.Range("M" & i).Value & "  --" & mysheet2.Range("N" & i).Value & "" & vbCrLf
                  ElseIf mysheet2.Range("Q" & i).Value = "T3" Then '状态类不带删除标识拉链加载算法
                     'INSERT TABLE加工 要插入的目标字段
                     v_target_sql = "  INSERT INTO " & mysheet2.Range("B" & i).Value & "." & mysheet2.Range("C" & i).Value & "_TMP1" & vbCrLf
                     v_target_sql = v_target_sql & "  (" & mysheet2.Range("F" & i).Value & "  --" & mysheet2.Range("G" & i).Value & "" & vbCrLf
                     '目标表SELECT 加工 目标表第一个SELECT字段
                     v_target_col_sql = "   SELECT B." & mysheet2.Range("F" & i).Value & "  --" & mysheet2.Range("G" & i).Value & "" & vbCrLf
                     '源表SELECT 加工 源表第一个SELECT字段
                     v_source_sql = "   SELECT A." & mysheet2.Range("M" & i).Value & "  --" & mysheet2.Range("N" & i).Value & "" & vbCrLf
                  ElseIf mysheet2.Range("Q" & i).Value = "T4" Then '状态类带删除标识拉链加载算法
                     'INSERT TABLE加工 要插入的目标字段
                     v_target_sql = "  INSERT INTO " & mysheet2.Range("B" & i).Value & "." & mysheet2.Range("C" & i).Value & "_TMP1" & vbCrLf
                     v_target_sql = v_target_sql & "  (" & mysheet2.Range("F" & i).Value & "  --" & mysheet2.Range("G" & i).Value & "" & vbCrLf
                     '目标表SELECT 加工 目标第一个SELECT字段
                     v_target_col_sql = "   SELECT B." & mysheet2.Range("F" & i).Value & "  --" & mysheet2.Range("G" & i).Value & "" & vbCrLf
                     '源表SELECT 加工 源表第一个SELECT字段
                     v_source_sql = "   SELECT A." & mysheet2.Range("M" & i).Value & "  --" & mysheet2.Range("N" & i).Value & "" & vbCrLf
                  End If
                  
               Else '表其他记录处理
                  If mysheet2.Range("Q" & i).Value = "T1" Then '增量事件类加载算法
                     'INSERT TABLE加工 第二个以上要插入的目标字段
                     v_target_sql = v_target_sql & "   ," & mysheet2.Range("F" & i).Value & "  --" & mysheet2.Range("G" & i).Value & "" & vbCrLf
                     'SELECT 加工 第二个以上SELECT字段
                     v_source_sql = v_source_sql & "          ," & mysheet2.Range("M" & i).Value & "  --" & mysheet2.Range("N" & i).Value & "" & vbCrLf
                  ElseIf mysheet2.Range("Q" & i).Value = "T2" Then '全量登记簿类加载算法
                     'INSERT TABLE加工 第二个以上要插入的目标字段
                     v_target_sql = v_target_sql & "   ," & mysheet2.Range("F" & i).Value & "  --" & mysheet2.Range("G" & i).Value & "" & vbCrLf
                     'SELECT 加工 第二个以上SELECT字段 第二个以上目标表SELECT字段
                     v_source_sql = v_source_sql & "          ," & mysheet2.Range("M" & i).Value & "  --" & mysheet2.Range("N" & i).Value & "" & vbCrLf
                  ElseIf mysheet2.Range("Q" & i).Value = "T3" Then '状态类不带删除标识拉链加载算法
                     'START_DATE、END_DATE不进行MINUS操作
                     If mysheet2.Range("F" & i).Value <> "START_DATE" And mysheet2.Range("F" & i).Value <> "END_DATE" Then
                        'INSERT TABLE加工 第二个以上要插入的目标字段
                        v_target_sql = v_target_sql & "   ," & mysheet2.Range("F" & i).Value & "  --" & mysheet2.Range("G" & i).Value & "" & vbCrLf
                        '目标表SELECT 加工 第二个以上目标表SELECT字段
                        v_target_col_sql = v_target_col_sql & "          ,B." & mysheet2.Range("F" & i).Value & "  --" & mysheet2.Range("G" & i).Value & "" & vbCrLf
                        '源表SELECT 加工 第二个以上源表SELECT字段
                        v_source_sql = v_source_sql & "          ,A." & mysheet2.Range("M" & i).Value & "  --" & mysheet2.Range("N" & i).Value & "" & vbCrLf
                     End If
                  ElseIf mysheet2.Range("Q" & i).Value = "T4" Then '状态类带删除标识拉链加载算法
                    'START_DATE、END_DATE不进行MINUS操作
                     If mysheet2.Range("F" & i).Value <> "START_DATE" And mysheet2.Range("F" & i).Value <> "END_DATE" Then
                        'INSERT TABLE加工 第二个以上要插入的目标字段
                        v_target_sql = v_target_sql & "   ," & mysheet2.Range("F" & i).Value & "  --" & mysheet2.Range("G" & i).Value & "" & vbCrLf
                        'DEL_IND值置为' '
                        If mysheet2.Range("F" & i).Value = "DEL_IND" Then
                           '目标表SELECT 加工 第二个以上目标表SELECT字段
                           v_target_col_sql = v_target_col_sql & "          ,' '" & vbCrLf
                           '源表SELECT 加工 第二个以上源表SELECT字段
                           v_source_sql = v_source_sql & "          ,' '" & vbCrLf
                        Else
                           '目标表SELECT 加工 第二个以上目标表SELECT字段
                           v_target_col_sql = v_target_col_sql & "          ,B." & mysheet2.Range("F" & i).Value & "  --" & mysheet2.Range("G" & i).Value & "" & vbCrLf
                           '源表SELECT 加工 第二个以上源表SELECT字段
                           v_source_sql = v_source_sql & "          ,A." & mysheet2.Range("M" & i).Value & "  --" & mysheet2.Range("N" & i).Value & "" & vbCrLf
                        End If
                     End If
                  End If
               
               End If '第一个字段
            
               If mysheet2.Range("A" & i).Value <> mysheet2.Range("A" & i + 1).Value Then '表最后一条记录处理
                  If mysheet2.Range("Q" & i).Value = "T1" Then '增量事件类加载算法
                     Set Fopen = FSO.OpenTextFile(ThisWorkbook.Path & "DBDBS" & mysheet1.Range("B2").Value & "Procedures" & mysheet2.Range("A" & i).Value & ".prc", 8, False)
                  
                     Fopen.WriteLine ("  --插入增量剥离后的数据")
                     Fopen.WriteLine ("  V_STEP := '增量剥离后的数据插入临时表';")
                     Fopen.Write (v_target_sql)
                     Fopen.WriteLine ("   )")
                     Fopen.Write (v_source_sql)
                     Fopen.WriteLine ("      FROM " & mysheet2.Range("J" & i).Value & "." & mysheet2.Range("K" & i).Value & "  --" & mysheet2.Range("L" & i).Value & "")
                     Fopen.WriteLine ("   ;")
                     Fopen.WriteLine ("   COMMIT;")
                  
                     Fopen.WriteLine ("")
                  
                     Fopen.Close
                     Set Fopen = Nothing
                  ElseIf mysheet2.Range("Q" & i).Value = "T2" Then '全量登记簿类加载算法
                     Set Fopen = FSO.OpenTextFile(ThisWorkbook.Path & "DBDBS" & mysheet1.Range("B2").Value & "Procedures" & mysheet2.Range("A" & i).Value & ".prc", 8, False)
                  
                     Fopen.WriteLine ("  --插入增量剥离后的数据")
                     Fopen.WriteLine ("  V_STEP := '增量剥离后的数据插入临时表';")
                     Fopen.Write (v_target_sql)
                     Fopen.WriteLine ("   )")
                     Fopen.Write (v_source_sql)
                     Fopen.WriteLine ("     FROM " & mysheet2.Range("J" & i).Value & "." & mysheet2.Range("K" & i).Value & "  --" & mysheet2.Range("L" & i).Value & "")
                     Fopen.WriteLine ("   ;")
                     Fopen.WriteLine ("   COMMIT;")
                  
                     Fopen.WriteLine ("")
                  
                     Fopen.Close
                     Set Fopen = Nothing
                  ElseIf mysheet2.Range("Q" & i).Value = "T3" Then '状态类不带删除标识拉链加载算法
                     Set Fopen = FSO.OpenTextFile(ThisWorkbook.Path & "DBDBS" & mysheet1.Range("B2").Value & "Procedures" & mysheet2.Range("A" & i).Value & ".prc", 8, False)
                     
                     Fopen.WriteLine ("  --插入增量剥离后的数据")
                     Fopen.WriteLine ("  V_STEP := '增量剥离后的数据插入临时表';")
                     Fopen.Write (v_target_sql)
                     Fopen.WriteLine ("   )")
                     Fopen.Write (v_source_sql)
                     Fopen.WriteLine ("     FROM " & mysheet2.Range("J" & i).Value & "." & mysheet2.Range("K" & i).Value & " A --" & mysheet2.Range("L" & i).Value & "")
                     Fopen.WriteLine ("   MINUS")
                     Fopen.Write (v_target_col_sql)
                     Fopen.WriteLine ("     FROM " & mysheet2.Range("B" & i).Value & "." & mysheet2.Range("C" & i).Value & " B --" & mysheet2.Range("D" & i).Value & "")
                     Fopen.WriteLine ("    WHERE V_DATA_DATE>=B.START_DATE")
                     Fopen.WriteLine ("      AND V_DATA_DATE<=B.END_DATE")
                     Fopen.WriteLine ("   ;")
                     Fopen.WriteLine ("   COMMIT;")
                     
                     Fopen.WriteLine ("")
                  
                     Fopen.Close
                     Set Fopen = Nothing
                  ElseIf mysheet2.Range("Q" & i).Value = "T4" Then '状态类带删除标识拉链加载算法
                     Set Fopen = FSO.OpenTextFile(ThisWorkbook.Path & "DBDBS" & mysheet1.Range("B2").Value & "Procedures" & mysheet2.Range("A" & i).Value & ".prc", 8, False)
                     
                     Fopen.WriteLine ("  --插入增量剥离后的数据")
                     Fopen.WriteLine ("  V_STEP := '增量剥离后的数据插入临时表';")
                     Fopen.Write (v_target_sql)
                     Fopen.WriteLine ("   )")
                     Fopen.Write (v_source_sql)
                     Fopen.WriteLine ("     FROM " & mysheet2.Range("J" & i).Value & "." & mysheet2.Range("K" & i).Value & " A --" & mysheet2.Range("L" & i).Value & "")
                     Fopen.WriteLine ("   MINUS")
                     Fopen.Write (v_target_col_sql)
                     Fopen.WriteLine ("     FROM " & mysheet2.Range("B" & i).Value & "." & mysheet2.Range("C" & i).Value & " B --" & mysheet2.Range("D" & i).Value & "")
                     Fopen.WriteLine ("    WHERE B.END_DATE=V_EDATE")
                     Fopen.WriteLine ("   ;")
                     Fopen.WriteLine ("   COMMIT;")
                     
                     Fopen.WriteLine ("")
                  
                     Fopen.Close
                     Set Fopen = Nothing
                  End If
               End If '表最后一条记录处理
            End If '判断版本
        Next i
        
        '增加步骤3-2 用于T4带删除标识拉链 T4
        '当天没有送到的记录打上删除标识插入中间表
        For i = 2 To mysheet2.UsedRange.Rows.Count '遍历所有的行
            If mysheet1.Range("B1").Value = mysheet2.Range("P" & i).Value Then '判断版本
               If mysheet2.Range("A" & i).Value <> mysheet2.Range("A" & i - 1).Value Then '表第一条记录处理
               
                  If mysheet2.Range("Q" & i).Value = "T4" Then  '状态类带删除标识拉链加载算法
                     'INSERT TABLE加工
                     v_target_sql = "  INSERT INTO " & mysheet2.Range("B" & i).Value & "." & mysheet2.Range("C" & i).Value & "_TMP1" & vbCrLf
                     v_target_sql = v_target_sql & "  (" & mysheet2.Range("F" & i).Value & "  --" & mysheet2.Range("G" & i).Value & "" & vbCrLf
                     '目标表SELECT 加工
                     v_target_col_sql = "   SELECT A." & mysheet2.Range("F" & i).Value & "  --" & mysheet2.Range("G" & i).Value & "" & vbCrLf
                  End If '
                  
               Else '其他字段
                  If mysheet2.Range("Q" & i).Value = "T4" Then '状态类带删除标识拉链加载算法
                     If mysheet2.Range("F" & i).Value <> "START_DATE" And mysheet2.Range("F" & i).Value <> "END_DATE" Then
                        'INSERT TABLE加工
                        v_target_sql = v_target_sql & "   ," & mysheet2.Range("F" & i).Value & "  --" & mysheet2.Range("G" & i).Value & "" & vbCrLf
                        If mysheet2.Range("F" & i).Value = "DEL_IND" Then
                           '目标表SELECT 加工
                           v_target_col_sql = v_target_col_sql & "          ,'D'" & vbCrLf
                        Else
                           '目标表SELECT 加工
                           v_target_col_sql = v_target_col_sql & "          ,A." & mysheet2.Range("F" & i).Value & "  --" & mysheet2.Range("G" & i).Value & "" & vbCrLf
                        End If
                     End If
                  End If
               
               End If
               
               '以主键做为关联条件
               If mysheet2.Range("I" & i).Value = "Y" Then
                  If mysheet2.Range("A" & i).Value <> mysheet2.Range("A" & i - 1).Value Then '第一个字段
                     v_where_sql = "      AND B." & mysheet2.Range("M" & i).Value & "=A." & mysheet2.Range("F" & i).Value & "" & vbCrLf
                     v_where_col_num = "      AND B." & mysheet2.Range("M" & i).Value & " IS NULL" & vbCrLf
                  Else
                     v_where_sql = v_where_sql & "      AND B." & mysheet2.Range("M" & i).Value & "=A." & mysheet2.Range("F" & i).Value & "" & vbCrLf
                  End If
               End If
            
               If mysheet2.Range("A" & i).Value <> mysheet2.Range("A" & i + 1).Value Then '表最后一条记录处理
                  If mysheet2.Range("Q" & i).Value = "T4" Then '状态类带删除标识拉链加载算法
                     Set Fopen = FSO.OpenTextFile(ThisWorkbook.Path & "DBDBS" & mysheet1.Range("B2").Value & "Procedures" & mysheet2.Range("A" & i).Value & ".prc", 8, False)
                     
                     Fopen.WriteLine ("  --插入增量数据(DELETE)")
                     Fopen.WriteLine ("  V_STEP := '需要打删除标记的数据插入临时表';")
                     Fopen.Write (v_target_sql)
                     Fopen.WriteLine ("   )")
                     Fopen.Write (v_target_col_sql)
                     Fopen.WriteLine ("     FROM " & mysheet2.Range("B" & i).Value & "." & mysheet2.Range("C" & i).Value & " A --" & mysheet2.Range("D" & i).Value & "")
                     Fopen.WriteLine ("     LEFT JOIN " & mysheet2.Range("J" & i).Value & "." & mysheet2.Range("K" & i).Value & " B")
                     Fopen.WriteLine ("       ON 1=1")
                     Fopen.Write (v_where_sql)
                     Fopen.WriteLine ("    WHERE A.END_DATE=V_EDATE")
                     Fopen.WriteLine ("      AND A.DEL_IND<> 'D'")
                     Fopen.Write (v_where_col_num)
                     Fopen.WriteLine ("   ;")
                     Fopen.WriteLine ("   COMMIT;")
                     
                     Fopen.WriteLine ("")
                  
                     Fopen.Close
                     Set Fopen = Nothing
                  End If '
               End If '表最后一条记录处理
            End If '判断版本
        Next i
        
        '增加步骤3-1  闭链处理,将中间表中存在的记录在目标表中闭链,用于T3T4
        For i = 2 To mysheet2.UsedRange.Rows.Count '遍历所有的行
            If mysheet1.Range("B1").Value = mysheet2.Range("P" & i).Value Then '判断版本
            
               '主键关联条件
               If mysheet2.Range("I" & i).Value = "Y" Then
                  If mysheet2.Range("A" & i).Value <> mysheet2.Range("A" & i - 1).Value Then '表第一行处理
                     v_where_sql = "                 AND A." & mysheet2.Range("F" & i).Value & "=B." & mysheet2.Range("F" & i).Value & "" & vbCrLf
                  Else
                     v_where_sql = v_where_sql & "                 AND A." & mysheet2.Range("F" & i).Value & "=B." & mysheet2.Range("F" & i).Value & "" & vbCrLf
                  End If
               End If
            
               If mysheet2.Range("A" & i).Value <> mysheet2.Range("A" & i + 1).Value Then '表最后一行处理
                  If mysheet2.Range("Q" & i).Value = "T3" Then '状态类不带删除标识拉链加载算法
                     Set Fopen = FSO.OpenTextFile(ThisWorkbook.Path & "DBDBS" & mysheet1.Range("B2").Value & "Procedures" & mysheet2.Range("A" & i).Value & ".prc", 8, False)
                  
                     Fopen.WriteLine ("  --将目标表中END_DATE=99991231 且在临时表中存在的记录闭链")
                     Fopen.WriteLine ("  V_STEP := '将拉链表中需要闭链的数据闭链';")
                     Fopen.WriteLine ("  UPDATE " & mysheet2.Range("B" & i).Value & "." & mysheet2.Range("C" & i).Value & " A")
                     Fopen.WriteLine ("     SET END_DATE=TO_CHAR(TO_DATE(V_DATA_DATE,'YYYYMMDD')-1,'YYYYMMDD')")
                     Fopen.WriteLine ("   WHERE EXISTS")
                     Fopen.WriteLine ("            (")
                     Fopen.WriteLine ("              SELECT '1'")
                     Fopen.WriteLine ("                FROM " & mysheet2.Range("B" & i).Value & "." & mysheet2.Range("C" & i).Value & "_TMP1 B")
                     Fopen.WriteLine ("               WHERE 1 = 1")
                     Fopen.Write (v_where_sql)
                     Fopen.WriteLine ("            )")
                     Fopen.WriteLine ("     AND A.END_DATE = V_EDATE")
                     Fopen.WriteLine ("  ;")
                     Fopen.WriteLine ("  COMMIT;")
                     
                     Fopen.WriteLine ("")
                     
                     Fopen.Close
                     Set Fopen = Nothing
                  ElseIf mysheet2.Range("Q" & i).Value = "T4" Then '状态类带删除标识拉链加载算法
                     Set Fopen = FSO.OpenTextFile(ThisWorkbook.Path & "DBDBS" & mysheet1.Range("B2").Value & "Procedures" & mysheet2.Range("A" & i).Value & ".prc", 8, False)
                  
                     Fopen.WriteLine ("  --将目标表中END_DATE=99991231 且在临时表中存在的记录闭链")
                     Fopen.WriteLine ("  V_STEP := '将拉链表中需要闭链的数据闭链';")
                     Fopen.WriteLine ("  UPDATE " & mysheet2.Range("B" & i).Value & "." & mysheet2.Range("C" & i).Value & " A")
                     Fopen.WriteLine ("     SET END_DATE=TO_CHAR(TO_DATE(V_DATA_DATE,'YYYYMMDD')-1,'YYYYMMDD')")
                     Fopen.WriteLine ("   WHERE EXISTS")
                     Fopen.WriteLine ("            (")
                     Fopen.WriteLine ("              SELECT '1'")
                     Fopen.WriteLine ("                FROM " & mysheet2.Range("B" & i).Value & "." & mysheet2.Range("C" & i).Value & "_TMP1 B")
                     Fopen.WriteLine ("               WHERE 1 = 1")
                     Fopen.Write (v_where_sql)
                     Fopen.WriteLine ("            )")
                     Fopen.WriteLine ("     AND A.END_DATE = V_EDATE")
                     Fopen.WriteLine ("  ;")
                     Fopen.WriteLine ("  COMMIT;")
                     
                     Fopen.WriteLine ("")
                     
                     Fopen.Close
                     Set Fopen = Nothing
                  End If
               End If '表最后一行处理
            End If '判断版本
        Next i
        
        
        
        
        
        '增加步骤4,中间表插入目标表 T1/T2/T3/T4
        For i = 2 To mysheet2.UsedRange.Rows.Count '遍历所有的行
            If mysheet1.Range("B1").Value = mysheet2.Range("P" & i).Value Then '判断版本
               If mysheet2.Range("A" & i).Value <> mysheet2.Range("A" & i - 1).Value Then '第一行记录处理
               
                  If mysheet2.Range("Q" & i).Value = "T1" Then '增量事件类加载算法
                     'INSERT TABLE加工
                     v_target_sql = "  INSERT INTO " & mysheet2.Range("B" & i).Value & "." & mysheet2.Range("C" & i).Value & "" & vbCrLf
                     v_target_sql = v_target_sql & "  (" & mysheet2.Range("F" & i).Value & "  --" & mysheet2.Range("G" & i).Value & "" & vbCrLf
                  
                     'SELECT 加工
                     v_source_sql = "   SELECT " & mysheet2.Range("F" & i).Value & "  --" & mysheet2.Range("G" & i).Value & "" & vbCrLf
                  
                  ElseIf mysheet2.Range("Q" & i).Value = "T2" Then '全量登记簿类加载算法
                     'INSERT TABLE加工
                     v_target_sql = "  INSERT INTO " & mysheet2.Range("B" & i).Value & "." & mysheet2.Range("C" & i).Value & "" & vbCrLf
                     v_target_sql = v_target_sql & "  (" & mysheet2.Range("F" & i).Value & "  --" & mysheet2.Range("G" & i).Value & "" & vbCrLf
                  
                     'SELECT 加工
                     v_source_sql = "   SELECT " & mysheet2.Range("F" & i).Value & "  --" & mysheet2.Range("G" & i).Value & "" & vbCrLf
                  ElseIf mysheet2.Range("Q" & i).Value = "T3" Then '状态类不带删除标识拉链加载算法
                     'INSERT TABLE加工
                     v_target_sql = "  INSERT INTO " & mysheet2.Range("B" & i).Value & "." & mysheet2.Range("C" & i).Value & "" & vbCrLf
                     v_target_sql = v_target_sql & "  (" & mysheet2.Range("F" & i).Value & "  --" & mysheet2.Range("G" & i).Value & "" & vbCrLf
                  
                     'SELECT 加工
                     v_source_sql = "   SELECT " & mysheet2.Range("F" & i).Value & "  --" & mysheet2.Range("G" & i).Value & "" & vbCrLf
                  ElseIf mysheet2.Range("Q" & i).Value = "T4" Then '状态类带删除标识拉链加载算法
                     'INSERT TABLE加工
                     v_target_sql = "  INSERT INTO " & mysheet2.Range("B" & i).Value & "." & mysheet2.Range("C" & i).Value & "" & vbCrLf
                     v_target_sql = v_target_sql & "  (" & mysheet2.Range("F" & i).Value & "  --" & mysheet2.Range("G" & i).Value & "" & vbCrLf
                  
                     'SELECT 加工
                     v_source_sql = "   SELECT " & mysheet2.Range("F" & i).Value & "  --" & mysheet2.Range("G" & i).Value & "" & vbCrLf
                  End If
               
               Else '其他字段
                  If mysheet2.Range("Q" & i).Value = "T1" Then '增量事件类加载算法
                     'INSERT TABLE加工
                     v_target_sql = v_target_sql & "   ," & mysheet2.Range("F" & i).Value & "  --" & mysheet2.Range("G" & i).Value & "" & vbCrLf
                  
                     'SELECT 加工
                     v_source_sql = v_source_sql & "          ," & mysheet2.Range("F" & i).Value & "  --" & mysheet2.Range("G" & i).Value & "" & vbCrLf
                  
                  ElseIf mysheet2.Range("Q" & i).Value = "T2" Then '全量登记簿类加载算法
                     'INSERT TABLE加工
                     v_target_sql = v_target_sql & "   ," & mysheet2.Range("F" & i).Value & "  --" & mysheet2.Range("G" & i).Value & "" & vbCrLf
                  
                     'SELECT 加工
                     v_source_sql = v_source_sql & "          ," & mysheet2.Range("F" & i).Value & "  --" & mysheet2.Range("G" & i).Value & "" & vbCrLf
                  ElseIf mysheet2.Range("Q" & i).Value = "T3" Then '状态类不带删除标识拉链加载算法
                     'INSERT TABLE加工
                     v_target_sql = v_target_sql & "   ," & mysheet2.Range("F" & i).Value & "  --" & mysheet2.Range("G" & i).Value & "" & vbCrLf
                  
                     'SELECT 加工
                     If mysheet2.Range("F" & i).Value = "START_DATE" Then
                        v_source_sql = v_source_sql & "          ,V_DATA_DATE" & vbCrLf
                     ElseIf mysheet2.Range("F" & i).Value = "END_DATE" Then
                        v_source_sql = v_source_sql & "          ,V_EDATE" & vbCrLf
                     Else
                        v_source_sql = v_source_sql & "          ," & mysheet2.Range("F" & i).Value & "  --" & mysheet2.Range("G" & i).Value & "" & vbCrLf
                     End If
                  ElseIf mysheet2.Range("Q" & i).Value = "T4" Then '状态类带删除标识拉链加载算法
                     'INSERT TABLE加工
                     v_target_sql = v_target_sql & "   ," & mysheet2.Range("F" & i).Value & "  --" & mysheet2.Range("G" & i).Value & "" & vbCrLf
                  
                     'SELECT 加工
                     If mysheet2.Range("F" & i).Value = "START_DATE" Then
                        v_source_sql = v_source_sql & "          ,V_DATA_DATE" & vbCrLf
                     ElseIf mysheet2.Range("F" & i).Value = "END_DATE" Then
                        v_source_sql = v_source_sql & "          ,V_EDATE" & vbCrLf
                     Else
                        v_source_sql = v_source_sql & "          ," & mysheet2.Range("F" & i).Value & "  --" & mysheet2.Range("G" & i).Value & "" & vbCrLf
                     End If
                  End If
               
               End If '第一个字段
            
               If mysheet2.Range("A" & i).Value <> mysheet2.Range("A" & i + 1).Value Then '判断最后一个字段
                  If mysheet2.Range("Q" & i).Value = "T1" Then '增量事件类加载算法
                     Set Fopen = FSO.OpenTextFile(ThisWorkbook.Path & "DBDBS" & mysheet1.Range("B2").Value & "Procedures" & mysheet2.Range("A" & i).Value & ".prc", 8, False)
                  
                     Fopen.WriteLine ("  --插入增加或数据日期当天的数据")
                     Fopen.WriteLine ("  V_STEP := '临时表数据插入目标表';")
                     Fopen.Write (v_target_sql)
                     Fopen.WriteLine ("   )")
                     Fopen.Write (v_source_sql)
                     Fopen.WriteLine ("      FROM " & mysheet2.Range("B" & i).Value & "." & mysheet2.Range("C" & i).Value & "_TMP1  ")
                     Fopen.WriteLine ("   ;")
                     Fopen.WriteLine ("   COMMIT;")
                  
                     Fopen.WriteLine ("")
                  
                     Fopen.Close
                     Set Fopen = Nothing
                  ElseIf mysheet2.Range("Q" & i).Value = "T2" Then '全量登记簿类加载算法
                     Set Fopen = FSO.OpenTextFile(ThisWorkbook.Path & "DBDBS" & mysheet1.Range("B2").Value & "Procedures" & mysheet2.Range("A" & i).Value & ".prc", 8, False)
                     
                     Fopen.WriteLine ("  --插入增加或数据日期当天的数据")
                     Fopen.WriteLine ("  V_STEP := '临时表数据插入目标表';")
                     Fopen.Write (v_target_sql)
                     Fopen.WriteLine ("   )")
                     Fopen.Write (v_source_sql)
                     Fopen.WriteLine ("     FROM " & mysheet2.Range("B" & i).Value & "." & mysheet2.Range("C" & i).Value & "_TMP1  ")
                     Fopen.WriteLine ("   ;")
                     Fopen.WriteLine ("   COMMIT;")
                  
                     Fopen.WriteLine ("")
                  
                     Fopen.Close
                     Set Fopen = Nothing
                  ElseIf mysheet2.Range("Q" & i).Value = "T3" Then '状态类不带删除标识拉链加载算法
                     Set Fopen = FSO.OpenTextFile(ThisWorkbook.Path & "DBDBS" & mysheet1.Range("B2").Value & "Procedures" & mysheet2.Range("A" & i).Value & ".prc", 8, False)
                     
                     Fopen.WriteLine ("  --插入增加或数据日期当天的数据")
                     Fopen.WriteLine ("  V_STEP := '临时表数据插入目标表';")
                     Fopen.Write (v_target_sql)
                     Fopen.WriteLine ("   )")
                     Fopen.Write (v_source_sql)
                     Fopen.WriteLine ("     FROM " & mysheet2.Range("B" & i).Value & "." & mysheet2.Range("C" & i).Value & "_TMP1  ")
                     Fopen.WriteLine ("   ;")
                     Fopen.WriteLine ("   COMMIT;")
                  
                     Fopen.WriteLine ("")
                  
                     Fopen.Close
                     Set Fopen = Nothing
                  ElseIf mysheet2.Range("Q" & i).Value = "T4" Then '状态类带删除标识拉链加载算法
                     Set Fopen = FSO.OpenTextFile(ThisWorkbook.Path & "DBDBS" & mysheet1.Range("B2").Value & "Procedures" & mysheet2.Range("A" & i).Value & ".prc", 8, False)
                     
                     Fopen.WriteLine ("  --插入增加或数据日期当天的数据")
                     Fopen.WriteLine ("  V_STEP := '临时表数据插入目标表';")
                     Fopen.Write (v_target_sql)
                     Fopen.WriteLine ("   )")
                     Fopen.Write (v_source_sql)
                     Fopen.WriteLine ("     FROM " & mysheet2.Range("B" & i).Value & "." & mysheet2.Range("C" & i).Value & "_TMP1  ")
                     Fopen.WriteLine ("   ;")
                     Fopen.WriteLine ("   COMMIT;")
                  
                     Fopen.WriteLine ("")
                  
                     Fopen.Close
                     Set Fopen = Nothing
                  End If
               End If '判断最后一个字段
            End If '判断版本
        Next i
        
        
        
        '增加存储过程尾
        For i = 2 To mysheet2.UsedRange.Rows.Count '遍历所有的列
            If mysheet1.Range("B1").Value = mysheet2.Range("P" & i).Value Then '判断版本
               If mysheet2.Range("A" & i).Value <> mysheet2.Range("A" & i - 1).Value Then '判断是否存储过程开始
                  Set Fopen = FSO.OpenTextFile(ThisWorkbook.Path & "DBDBS" & mysheet1.Range("B2").Value & "Procedures" & mysheet2.Range("A" & i).Value & ".prc", 8, False)
               
                  Fopen.WriteLine ("")
                  Fopen.WriteLine ("  PACK_UTIL.WRITE_TRACE(V_PROC_NAME,")
                  Fopen.WriteLine ("                          V_START_TIME,")
                  Fopen.WriteLine ("                          V_END_TIME,")
                  Fopen.WriteLine ("                          P_O_RESULT);")
                  Fopen.WriteLine ("  EXCEPTION")
                  Fopen.WriteLine ("    WHEN OTHERS THEN")
                  Fopen.WriteLine ("      P_O_RESULT := V_FAILED;")
                  Fopen.WriteLine ("      PACK_UTIL.WRITE_LOG(V_PROC_NAME,")
                  Fopen.WriteLine ("                          V_STEP,")
                  Fopen.WriteLine ("                          SUBSTR(SQLERRM, 1, 500),")
                  Fopen.WriteLine ("                          P_O_RESULT);")
                  Fopen.WriteLine ("   RAISE_APPLICATION_ERROR(-20001, V_PROC_NAME);")
                  Fopen.WriteLine ("END " & mysheet2.Range("A" & i).Value & ";")
                  Fopen.WriteLine ("/")
               
                  Fopen.Close
                  Set Fopen = Nothing
               End If '判断是否存储过程开始
            End If '判断版本
        Next i
             
        
        Set FSO = Nothing
        
    End Sub
    

      

  • 相关阅读:
    ZOJ 2859 Matrix Searching
    URAL 1102. Strange Dialog
    ZOJ 1986 Bridging Signals
    POJ 3233 Matrix Power Series
    POJ 1836 Alignment
    POJ 3267 The Cow Lexicon
    ZOJ 3471 Most Powerful
    IIS:HTTP 错误 403.9 禁止访问:连接的用户过多
    使用Command对象执行数据库操作
    C#类型转换
  • 原文地址:https://www.cnblogs.com/wenwu5832/p/6878565.html
Copyright © 2011-2022 走看看