Stored Procedures [dbo].[CHECK_STRUCT_METADATA]
Properties
PropertyValue
ANSI Nulls OnYes
Quoted Identifier OnYes
SQL Script
CREATE PROCEDURE [dbo].[CHECK_STRUCT_METADATA]  
AS
   
   /*
   *   Generated by SQL Server Migration Assistant for Oracle.
   *   Contact ora2sql@microsoft.com or visit http://www.microsoft.com/sql/migration for more information.
   */

   BEGIN

      /* column declarations*/
      DECLARE
         @var_err_code int,
         @var_err_table_name nvarchar(100),
         @var_pk1_field_value nvarchar(100),
         @var_pk2_field_value nvarchar(100),
         @var_err_field_name nvarchar(100),
         @var_err_field_value nvarchar(255),
         @var_err_message nvarchar(255),
         @var_err_resolution nvarchar(255)

      /***** 100-199 arg_table_def errors *****/
      SET @var_err_code = 100

      SET @var_err_message = 'Warning: table/view has no fields defined in arg_field_def'

      SET @var_err_resolution = 'add field records for table/view'

      SET @var_err_table_name = 'arg_table_def'

      SET @var_err_field_name = 'table_name'

      SET @var_pk1_field_value = NULL

      SET @var_pk2_field_value = NULL

      SET @var_err_field_value = NULL

      BEGIN

         DECLARE
             err_records CURSOR LOCAL FOR
               SELECT td.TABLE_NAME
               FROM
                  dbo.ARG_TABLE_DEF  AS td
                     FULL OUTER JOIN dbo.ARG_FIELD_DEF  AS fd
                     ON fd.TABLE_NAME = td.TABLE_NAME
               WHERE td.TABLE_NAME IS NOT NULL AND fd.TABLE_NAME IS NULL

         OPEN err_records

         WHILE 1 = 1
         
            BEGIN

               FETCH err_records
                   INTO @var_pk1_field_value

               /*
               *   SSMA warning messages:
               *   O2SS0113: The value of @@FETCH_STATUS might be changed by previous FETCH operations on other cursors, if the cursors are used simultaneously.
               */


               IF @@FETCH_STATUS <> 0
                  BREAK

               INSERT dbo.ARG_METADATA_WARNINGS(
                  ERR_CODE,
                  ERR_TABLE_NAME,
                  PK1_FIELD_VALUE,
                  PK2_FIELD_VALUE,
                  ERR_FIELD_NAME,
                  ERR_FIELD_VALUE,
                  ERR_MESSAGE,
                  ERR_RESOLUTION)
                  VALUES (
                     @var_err_code,
                     @var_err_table_name,
                     @var_pk1_field_value,
                     @var_pk2_field_value,
                     @var_err_field_name,
                     @var_err_field_value,
                     @var_err_message,
                     @var_err_resolution)

            END

         CLOSE err_records

         DEALLOCATE err_records

      END

      SET @var_err_code = 101

      SET @var_err_message = 'Warning: table has no indexes defined in arg_index_def'

      SET @var_err_resolution = 'add index records for table indexes/primary keys'

      SET @var_err_table_name = 'arg_table_def'

      SET @var_err_field_name = 'table_name'

      SET @var_pk1_field_value = NULL

      SET @var_pk2_field_value = NULL

      SET @var_err_field_value = NULL

      BEGIN

         DECLARE
             err_records CURSOR LOCAL FOR
               SELECT td.TABLE_NAME
               FROM
                  dbo.ARG_TABLE_DEF  AS td
                     FULL OUTER JOIN dbo.ARG_INDEX_DEF  AS id
                     ON id.TABLE_NAME = td.TABLE_NAME
               WHERE
                  td.TABLE_NAME IS NOT NULL AND
                  id.TABLE_NAME IS NULL AND
                  td.VIRTUAL_TABLE = 0

         OPEN err_records

         WHILE 1 = 1
         
            BEGIN

               FETCH err_records
                   INTO @var_pk1_field_value

               /*
               *   SSMA warning messages:
               *   O2SS0113: The value of @@FETCH_STATUS might be changed by previous FETCH operations on other cursors, if the cursors are used simultaneously.
               */


               IF @@FETCH_STATUS <> 0
                  BREAK

               INSERT dbo.ARG_METADATA_WARNINGS(
                  ERR_CODE,
                  ERR_TABLE_NAME,
                  PK1_FIELD_VALUE,
                  PK2_FIELD_VALUE,
                  ERR_FIELD_NAME,
                  ERR_FIELD_VALUE,
                  ERR_MESSAGE,
                  ERR_RESOLUTION)
                  VALUES (
                     @var_err_code,
                     @var_err_table_name,
                     @var_pk1_field_value,
                     @var_pk2_field_value,
                     @var_err_field_name,
                     @var_err_field_value,
                     @var_err_message,
                     @var_err_resolution)

            END

         CLOSE err_records

         DEALLOCATE err_records

      END

      SET @var_err_code = 102

      SET @var_err_message = 'Warning: table/view has no classes defined in arg_class_def'

      SET @var_err_resolution = 'add class records for table/view'

      SET @var_err_table_name = 'arg_table_def'

      SET @var_err_field_name = 'table_name'

      SET @var_pk1_field_value = NULL

      SET @var_pk2_field_value = NULL

      SET @var_err_field_value = NULL

      BEGIN

         DECLARE
             err_records CURSOR LOCAL FOR
               SELECT td.TABLE_NAME
               FROM
                  dbo.ARG_TABLE_DEF  AS td
                     FULL OUTER JOIN dbo.ARG_CLASS_DEF  AS cd
                     ON cd.TABLE_NAME = td.TABLE_NAME
               WHERE td.TABLE_NAME IS NOT NULL AND cd.TABLE_NAME IS NULL

         OPEN err_records

         WHILE 1 = 1
         
            BEGIN

               FETCH err_records
                   INTO @var_pk1_field_value

               /*
               *   SSMA warning messages:
               *   O2SS0113: The value of @@FETCH_STATUS might be changed by previous FETCH operations on other cursors, if the cursors are used simultaneously.
               */


               IF @@FETCH_STATUS <> 0
                  BREAK

               INSERT dbo.ARG_METADATA_WARNINGS(
                  ERR_CODE,
                  ERR_TABLE_NAME,
                  PK1_FIELD_VALUE,
                  PK2_FIELD_VALUE,
                  ERR_FIELD_NAME,
                  ERR_FIELD_VALUE,
                  ERR_MESSAGE,
                  ERR_RESOLUTION)
                  VALUES (
                     @var_err_code,
                     @var_err_table_name,
                     @var_pk1_field_value,
                     @var_pk2_field_value,
                     @var_err_field_name,
                     @var_err_field_value,
                     @var_err_message,
                     @var_err_resolution)

            END

         CLOSE err_records

         DEALLOCATE err_records

      END

      SET @var_err_code = 103

      SET @var_err_message = 'Warning: table/view has no attributes defined in arg_attribute_def'

      SET @var_err_resolution = 'add attribute records for table/view'

      SET @var_err_table_name = 'arg_table_def'

      SET @var_err_field_name = 'table_name'

      SET @var_pk1_field_value = NULL

      SET @var_pk2_field_value = NULL

      SET @var_err_field_value = NULL

      BEGIN

         DECLARE
             err_records CURSOR LOCAL FOR
               SELECT td.TABLE_NAME
               FROM
                  dbo.ARG_TABLE_DEF  AS td
                     FULL OUTER JOIN dbo.ARG_ATTRIBUTE_DEF  AS ad
                     ON ad.TABLE_NAME = td.TABLE_NAME
               WHERE td.TABLE_NAME IS NOT NULL AND ad.TABLE_NAME IS NULL

         OPEN err_records

         WHILE 1 = 1
         
            BEGIN

               FETCH err_records
                   INTO @var_pk1_field_value

               /*
               *   SSMA warning messages:
               *   O2SS0113: The value of @@FETCH_STATUS might be changed by previous FETCH operations on other cursors, if the cursors are used simultaneously.
               */


               IF @@FETCH_STATUS <> 0
                  BREAK

               INSERT dbo.ARG_METADATA_WARNINGS(
                  ERR_CODE,
                  ERR_TABLE_NAME,
                  PK1_FIELD_VALUE,
                  PK2_FIELD_VALUE,
                  ERR_FIELD_NAME,
                  ERR_FIELD_VALUE,
                  ERR_MESSAGE,
                  ERR_RESOLUTION)
                  VALUES (
                     @var_err_code,
                     @var_err_table_name,
                     @var_pk1_field_value,
                     @var_pk2_field_value,
                     @var_err_field_name,
                     @var_err_field_value,
                     @var_err_message,
                     @var_err_resolution)

            END

         CLOSE err_records

         DEALLOCATE err_records

      END

      SET @var_err_code = 104

      SET @var_err_message = 'Warning: table description for table is blank'

      SET @var_err_resolution = 'add table description'

      SET @var_err_table_name = 'arg_table_def'

      SET @var_err_field_name = 'table_description'

      SET @var_pk1_field_value = NULL

      SET @var_pk2_field_value = NULL

      SET @var_err_field_value = NULL

      BEGIN

         DECLARE
             err_records CURSOR LOCAL FOR
               SELECT ARG_TABLE_DEF.TABLE_NAME, ARG_TABLE_DEF.TABLE_DESCRIPTION
               FROM dbo.ARG_TABLE_DEF
               WHERE ARG_TABLE_DEF.TABLE_DESCRIPTION IS NULL

         OPEN err_records

         WHILE 1 = 1
         
            BEGIN

               FETCH err_records
                   INTO @var_pk1_field_value, @var_err_field_value

               /*
               *   SSMA warning messages:
               *   O2SS0113: The value of @@FETCH_STATUS might be changed by previous FETCH operations on other cursors, if the cursors are used simultaneously.
               */


               IF @@FETCH_STATUS <> 0
                  BREAK

               INSERT dbo.ARG_METADATA_WARNINGS(
                  ERR_CODE,
                  ERR_TABLE_NAME,
                  PK1_FIELD_VALUE,
                  PK2_FIELD_VALUE,
                  ERR_FIELD_NAME,
                  ERR_FIELD_VALUE,
                  ERR_MESSAGE,
                  ERR_RESOLUTION)
                  VALUES (
                     @var_err_code,
                     @var_err_table_name,
                     @var_pk1_field_value,
                     @var_pk2_field_value,
                     @var_err_field_name,
                     @var_err_field_value,
                     @var_err_message,
                     @var_err_resolution)

            END

         CLOSE err_records

         DEALLOCATE err_records

      END

      SET @var_err_code = 105

      SET @var_err_message = 'table does not exist in the database'

      SET @var_err_resolution = 'add table or remove arg_table_def record'

      SET @var_err_table_name = 'arg_table_def'

      SET @var_err_field_name = 'table_name'

      SET @var_pk1_field_value = NULL

      SET @var_pk2_field_value = NULL

      SET @var_err_field_value = NULL

      BEGIN

         DECLARE
             err_records CURSOR LOCAL FOR
               SELECT td.TABLE_NAME
               FROM
                  dbo.ARG_TABLE_DEF  AS td
                     FULL OUTER JOIN dbo.USER_TABLES  AS s
                     ON s.table_name = upper(td.TABLE_NAME)
               WHERE
                  td.TABLE_NAME IS NOT NULL AND
                  td.VIRTUAL_TABLE = 0 AND
                  s.table_name IS NULL

         OPEN err_records

         WHILE 1 = 1
         
            BEGIN

               FETCH err_records
                   INTO @var_pk1_field_value

               /*
               *   SSMA warning messages:
               *   O2SS0113: The value of @@FETCH_STATUS might be changed by previous FETCH operations on other cursors, if the cursors are used simultaneously.
               */


               IF @@FETCH_STATUS <> 0
                  BREAK

               INSERT dbo.ARG_METADATA_ERRORS(
                  ERR_CODE,
                  ERR_TABLE_NAME,
                  PK1_FIELD_VALUE,
                  PK2_FIELD_VALUE,
                  ERR_FIELD_NAME,
                  ERR_FIELD_VALUE,
                  ERR_MESSAGE,
                  ERR_RESOLUTION)
                  VALUES (
                     @var_err_code,
                     @var_err_table_name,
                     @var_pk1_field_value,
                     @var_pk2_field_value,
                     @var_err_field_name,
                     @var_err_field_value,
                     @var_err_message,
                     @var_err_resolution)

            END

         CLOSE err_records

         DEALLOCATE err_records

      END

      SET @var_err_code = 106

      SET @var_err_message = 'view does not exist in the database'

      SET @var_err_resolution = 'add view or remove arg_table_def record'

      SET @var_err_table_name = 'arg_table_def'

      SET @var_err_field_name = 'table_name'

      SET @var_pk1_field_value = NULL

      SET @var_pk2_field_value = NULL

      SET @var_err_field_value = NULL

      
      /*
      *       declare cursor err_records is
      *                           select td.table_name
      *                           from arg_table_def td
      *                           full outer join sysobjects s on s.name = td.table_name
      *                           where td.table_name is not null and s.name is null and td.virtual_table = 1;
      *                       begin
      *                           open err_records;
      *                           loop
      *                           fetch err_records into var_pk1_field_value;
      *                           exit when err_records%NOTFOUND;
      *                               insert into arg_metadata_errors (err_code,err_table_name,pk1_field_value,pk2_field_value,err_field_name,err_field_value,err_message,err_resolution)
      *                               values(var_err_code,var_err_table_name,var_pk1_field_value,var_pk2_field_value,var_err_field_name,var_err_field_value,var_err_message,var_err_resolution);
      *                           end loop;
      *                           close err_records;
      *                       end;
      *
      *   **** 200-299 arg_field_def errors ****
      */

      SET @var_err_code = 200

      SET @var_err_message = 'table_name does not exist in arg_table_def'

      SET @var_err_resolution = 'correct field value or add table record'

      SET @var_err_table_name = 'arg_field_def'

      SET @var_err_field_name = 'table_name'

      SET @var_pk1_field_value = NULL

      SET @var_pk2_field_value = NULL

      SET @var_err_field_value = NULL

      BEGIN

         DECLARE
             err_records CURSOR LOCAL FOR
               SELECT fd.TABLE_NAME, fd.FIELD_NAME
               FROM
                  dbo.ARG_FIELD_DEF  AS fd
                     FULL OUTER JOIN dbo.ARG_TABLE_DEF  AS td
                     ON td.TABLE_NAME = fd.TABLE_NAME
               WHERE fd.TABLE_NAME IS NOT NULL AND td.TABLE_NAME IS NULL

         OPEN err_records

         WHILE 1 = 1
         
            BEGIN

               FETCH err_records
                   INTO @var_pk1_field_value, @var_pk2_field_value

               /*
               *   SSMA warning messages:
               *   O2SS0113: The value of @@FETCH_STATUS might be changed by previous FETCH operations on other cursors, if the cursors are used simultaneously.
               */


               IF @@FETCH_STATUS <> 0
                  BREAK

               INSERT dbo.ARG_METADATA_ERRORS(
                  ERR_CODE,
                  ERR_TABLE_NAME,
                  PK1_FIELD_VALUE,
                  PK2_FIELD_VALUE,
                  ERR_FIELD_NAME,
                  ERR_FIELD_VALUE,
                  ERR_MESSAGE,
                  ERR_RESOLUTION)
                  VALUES (
                     @var_err_code,
                     @var_err_table_name,
                     @var_pk1_field_value,
                     @var_pk2_field_value,
                     @var_err_field_name,
                     @var_err_field_value,
                     @var_err_message,
                     @var_err_resolution)

            END

         CLOSE err_records

         DEALLOCATE err_records

      END

      SET @var_err_code = 201

      SET @var_err_message = 'actual_table_name does not exist in arg_table_def'

      SET @var_err_resolution = 'correct field value or add table record'

      SET @var_err_table_name = 'arg_field_def'

      SET @var_err_field_name = 'actual_table_name'

      SET @var_pk1_field_value = NULL

      SET @var_pk2_field_value = NULL

      SET @var_err_field_value = NULL

      BEGIN

         DECLARE
             err_records CURSOR LOCAL FOR
               SELECT fd.TABLE_NAME, fd.FIELD_NAME, fd.ACTUAL_TABLE_NAME
               FROM
                  dbo.ARG_FIELD_DEF  AS fd
                     FULL OUTER JOIN dbo.ARG_TABLE_DEF  AS td
                     ON td.TABLE_NAME = fd.ACTUAL_TABLE_NAME
               WHERE fd.ACTUAL_TABLE_NAME IS NOT NULL AND td.TABLE_NAME IS NULL

         OPEN err_records

         WHILE 1 = 1
         
            BEGIN

               FETCH err_records
                   INTO @var_pk1_field_value, @var_pk2_field_value, @var_err_field_value

               /*
               *   SSMA warning messages:
               *   O2SS0113: The value of @@FETCH_STATUS might be changed by previous FETCH operations on other cursors, if the cursors are used simultaneously.
               */


               IF @@FETCH_STATUS <> 0
                  BREAK

               INSERT dbo.ARG_METADATA_ERRORS(
                  ERR_CODE,
                  ERR_TABLE_NAME,
                  PK1_FIELD_VALUE,
                  PK2_FIELD_VALUE,
                  ERR_FIELD_NAME,
                  ERR_FIELD_VALUE,
                  ERR_MESSAGE,
                  ERR_RESOLUTION)
                  VALUES (
                     @var_err_code,
                     @var_err_table_name,
                     @var_pk1_field_value,
                     @var_pk2_field_value,
                     @var_err_field_name,
                     @var_err_field_value,
                     @var_err_message,
                     @var_err_resolution)

            END

         CLOSE err_records

         DEALLOCATE err_records

      END

      SET @var_err_code = 202

      SET @var_err_message = 'actual_field_name does not exist in arg_field_def'

      SET @var_err_resolution = 'correct field value or add field record'

      SET @var_err_table_name = 'arg_field_def'

      SET @var_err_field_name = 'actual_field_name'

      SET @var_pk1_field_value = NULL

      SET @var_pk2_field_value = NULL

      SET @var_err_field_value = NULL

      BEGIN

         DECLARE
             err_records CURSOR LOCAL FOR
               SELECT fd1.TABLE_NAME, fd1.FIELD_NAME, fd1.ACTUAL_FIELD_NAME
               FROM
                  dbo.ARG_FIELD_DEF  AS fd1
                     FULL OUTER JOIN dbo.ARG_FIELD_DEF  AS fd2
                     ON fd2.TABLE_NAME = fd1.ACTUAL_TABLE_NAME AND fd2.FIELD_NAME = fd1.ACTUAL_FIELD_NAME
               WHERE fd1.ACTUAL_TABLE_NAME IS NOT NULL AND fd2.FIELD_NAME IS NULL

         OPEN err_records

         WHILE 1 = 1
         
            BEGIN

               FETCH err_records
                   INTO @var_pk1_field_value, @var_pk2_field_value, @var_err_field_value

               /*
               *   SSMA warning messages:
               *   O2SS0113: The value of @@FETCH_STATUS might be changed by previous FETCH operations on other cursors, if the cursors are used simultaneously.
               */


               IF @@FETCH_STATUS <> 0
                  BREAK

               INSERT dbo.ARG_METADATA_ERRORS(
                  ERR_CODE,
                  ERR_TABLE_NAME,
                  PK1_FIELD_VALUE,
                  PK2_FIELD_VALUE,
                  ERR_FIELD_NAME,
                  ERR_FIELD_VALUE,
                  ERR_MESSAGE,
                  ERR_RESOLUTION)
                  VALUES (
                     @var_err_code,
                     @var_err_table_name,
                     @var_pk1_field_value,
                     @var_pk2_field_value,
                     @var_err_field_name,
                     @var_err_field_value,
                     @var_err_message,
                     @var_err_resolution)

            END

         CLOSE err_records

         DEALLOCATE err_records

      END

      SET @var_err_code = 203

      SET @var_err_message = 'Warning: field has no attributes defined in arg_attribute_def'

      SET @var_err_resolution = 'add attribute records for field'

      SET @var_err_table_name = 'arg_field_def'

      SET @var_err_field_name = 'field_name'

      SET @var_pk1_field_value = NULL

      SET @var_pk2_field_value = NULL

      SET @var_err_field_value = NULL

      BEGIN

         DECLARE
             err_records CURSOR LOCAL FOR
               SELECT fd.TABLE_NAME, fd.FIELD_NAME
               FROM
                  dbo.ARG_FIELD_DEF  AS fd
                     LEFT OUTER JOIN dbo.ARG_ATTRIBUTE_DEF  AS ad
                     ON ad.TABLE_NAME = fd.TABLE_NAME AND ad.FIELD_NAME = fd.FIELD_NAME
               WHERE ad.FIELD_NAME IS NULL AND fd.FIELD_NAME IS NOT NULL

         OPEN err_records

         WHILE 1 = 1
         
            BEGIN

               FETCH err_records
                   INTO @var_pk1_field_value, @var_pk2_field_value

               /*
               *   SSMA warning messages:
               *   O2SS0113: The value of @@FETCH_STATUS might be changed by previous FETCH operations on other cursors, if the cursors are used simultaneously.
               */


               IF @@FETCH_STATUS <> 0
                  BREAK

               INSERT dbo.ARG_METADATA_WARNINGS(
                  ERR_CODE,
                  ERR_TABLE_NAME,
                  PK1_FIELD_VALUE,
                  PK2_FIELD_VALUE,
                  ERR_FIELD_NAME,
                  ERR_FIELD_VALUE,
                  ERR_MESSAGE,
                  ERR_RESOLUTION)
                  VALUES (
                     @var_err_code,
                     @var_err_table_name,
                     @var_pk1_field_value,
                     @var_pk2_field_value,
                     @var_err_field_name,
                     @var_err_field_value,
                     @var_err_message,
                     @var_err_resolution)

            END

         CLOSE err_records

         DEALLOCATE err_records

      END

      SET @var_err_code = 204

      SET @var_err_message = 'Warning: field description for field is blank'

      SET @var_err_resolution = 'add field description'

      SET @var_err_table_name = 'arg_field_def'

      SET @var_err_field_name = 'field_description'

      SET @var_pk1_field_value = NULL

      SET @var_pk2_field_value = NULL

      SET @var_err_field_value = NULL

      BEGIN

         DECLARE
             err_records CURSOR LOCAL FOR
               SELECT ARG_FIELD_DEF.TABLE_NAME, ARG_FIELD_DEF.FIELD_NAME, ARG_FIELD_DEF.FIELD_DESCRIPTION
               FROM dbo.ARG_FIELD_DEF
               WHERE ARG_FIELD_DEF.FIELD_DESCRIPTION IS NULL

         OPEN err_records

         WHILE 1 = 1
         
            BEGIN

               FETCH err_records
                   INTO @var_pk1_field_value, @var_pk2_field_value, @var_err_field_value

               /*
               *   SSMA warning messages:
               *   O2SS0113: The value of @@FETCH_STATUS might be changed by previous FETCH operations on other cursors, if the cursors are used simultaneously.
               */


               IF @@FETCH_STATUS <> 0
                  BREAK

               INSERT dbo.ARG_METADATA_WARNINGS(
                  ERR_CODE,
                  ERR_TABLE_NAME,
                  PK1_FIELD_VALUE,
                  PK2_FIELD_VALUE,
                  ERR_FIELD_NAME,
                  ERR_FIELD_VALUE,
                  ERR_MESSAGE,
                  ERR_RESOLUTION)
                  VALUES (
                     @var_err_code,
                     @var_err_table_name,
                     @var_pk1_field_value,
                     @var_pk2_field_value,
                     @var_err_field_name,
                     @var_err_field_value,
                     @var_err_message,
                     @var_err_resolution)

            END

         CLOSE err_records

         DEALLOCATE err_records

      END

      SET @var_err_code = 205

      SET @var_err_message = 'actual table and field must be blank for a table'

      SET @var_err_resolution = 'set actual table and field to null'

      SET @var_err_table_name = 'arg_field_def'

      SET @var_err_field_name = 'actual_table_name/actual_field_name'

      SET @var_pk1_field_value = NULL

      SET @var_pk2_field_value = NULL

      SET @var_err_field_value = NULL

      
      /*
      *    ???
      *                       declare cursor err_records is
      *                           select table_name, field_name, actual_table_name, actual_field_name from arg_field_def
      *                           where table_name in (select table_name from arg_table_def where virtual_table = 0)
      *                           and (actual_table_name is not null or actual_field_name is not null);
      *                       open err_records
      *                       fetch next from err_records INTO
      *                           @table_name, @field_name, @actual_table_name, @actual_field_name
      *                       while (@@fetch_status <> -1)
      *                       begin
      *                       if (@@fetch_status <> -2)
      *                       begin    
      *                           var_pk1_field_value = @table_name
      *                           var_pk2_field_value = @field_name
      *                           var_err_field_name = ' '
      *                           var_err_field_value = ' '
      *   
      *                           if @actual_table_name is not null
      *                           begin
      *                               var_err_field_name = 'actual_table_name'
      *                               var_err_field_value = @actual_table_name
      *                           end
      *   
      *                           if @actual_field_name is not null
      *                           begin
      *                               if len(@err_field_name) > 0
      *                                   var_err_field_name = @err_field_name + ','
      *                               if len(@err_field_value) > 0
      *                                   var_err_field_value = @err_field_value + ','
      *                               var_err_field_name = @err_field_name + 'actual_field_name'
      *                               var_err_field_value = @err_field_value + @actual_field_name
      *                           end
      *   
      *                           insert into arg_metadata_errors (
      *                               err_code, err_table_name, pk1_field_value, pk2_field_value,
      *                               err_field_name, err_field_value, err_message, err_resolution
      *                               ) values(
      *                               @err_code, @err_table_name, @pk1_field_value, @pk2_field_value,
      *                               @err_field_name, @err_field_value, @err_message, @err_resolution
      *                               )
      *                       end
      *                       fetch next from err_records INTO
      *                           @table_name, @field_name, @actual_table_name, @actual_field_name
      *                       end
      *                       close err_records
      *                       deallocate err_records
      *
      */

      SET @var_err_code = 206

      SET @var_err_message = 'actual table and field must be specified for a view'

      SET @var_err_resolution = 'add values for actual table and field'

      SET @var_err_table_name = 'arg_field_def'

      SET @var_err_field_name = 'actual_table_name/actual_field_name'

      SET @var_pk1_field_value = NULL

      SET @var_pk2_field_value = NULL

      SET @var_err_field_value = NULL

      
      /*
      *    ???
      *                       declare cursor err_records is
      *                           select table_name, field_name, actual_table_name, actual_field_name from arg_field_def
      *                           where table_name in (select table_name from arg_table_def where virtual_table = 1)
      *                           and (actual_table_name is null or actual_field_name is null);
      *                       open err_records
      *                       fetch next from err_records INTO
      *                           @table_name, @field_name, @actual_table_name, @actual_field_name
      *                       while (@@fetch_status <> -1)
      *                       begin
      *                       if (@@fetch_status <> -2)
      *                       begin    
      *                           var_pk1_field_value = @table_name
      *                           var_pk2_field_value = @table_name
      *                           if @actual_table_name is null and @actual_field_name is not null
      *                           begin
      *                               var_err_field_name = 'actual_table_name'
      *                               var_err_field_value = @actual_table_name
      *                           end
      *                           if @actual_table_name is not null and @actual_field_name is null
      *                           begin
      *                               var_err_field_name = 'actual_field_name'
      *                               var_err_field_value = @actual_field_name
      *                           end
      *                           if @actual_table_name is null and @actual_field_name is null
      *                           begin
      *                               var_err_field_name = 'actual_table_name, actual_field_name'
      *                               var_err_field_value = 'null,null'
      *                           end
      *                           insert into arg_metadata_errors (
      *                               err_code, err_table_name, pk1_field_value, pk2_field_value,
      *                               err_field_name, err_field_value, err_message, err_resolution
      *                               ) values(
      *                               @err_code, @err_table_name, @pk1_field_value, @pk2_field_value,
      *                               @err_field_name, @err_field_value, @err_message, @err_resolution
      *                               )
      *                       end
      *                       fetch next from err_records INTO
      *                           @table_name, @field_name, @actual_table_name, @actual_field_name
      *                       end
      *                       close err_records
      *                       deallocate err_records
      *
      */

      SET @var_err_code = 207

      SET @var_err_message = 'data_type, data_size, field_required, primary_key and foreign_key must be specified for a table'

      SET @var_err_resolution = 'add values for field attributes'

      SET @var_err_table_name = 'arg_field_def'

      SET @var_err_field_name = NULL

      SET @var_pk1_field_value = NULL

      SET @var_pk2_field_value = NULL

      SET @var_err_field_value = NULL

      
      /*
      *    ???
      *                       declare cursor err_records is
      *                           select table_name, field_name,
      *                           data_type, data_size, field_required, primary_key, foreign_key from arg_field_def
      *                           where table_name in (select table_name from arg_table_def where virtual_table = 0)
      *                           and (data_type is null or data_size is null or field_required is null
      *                           or primary_key is null or foreign_key is null);
      *                       open err_records
      *                       fetch next from err_records INTO
      *                           @table_name, @field_name, @data_type, @data_size, @field_required, @primary_key, @foreign_key
      *                       while (@@fetch_status <> -1)
      *                       begin
      *                       if (@@fetch_status <> -2)
      *                       begin    
      *                           var_pk1_field_value = @table_name
      *                           var_pk2_field_value = @field_name
      *                           var_err_field_name = ' '
      *                           var_err_field_value = ' '
      *   
      *                           if @data_type is null
      *                           begin
      *                               var_err_field_name = 'data_type'
      *                               var_err_field_value = 'null'
      *                           end
      *   
      *                           if @data_size is null
      *                           begin
      *                               if len(@err_field_name) > 0
      *                                   var_err_field_name = @err_field_name + ','
      *                               if len(@err_field_value) > 0
      *                                   var_err_field_value = @err_field_value + ','
      *                               var_err_field_name = @err_field_name + 'data_size'
      *                               var_err_field_value = @err_field_value + 'null'
      *                           end
      *   
      *                           if @field_required is null
      *                           begin
      *                               if len(@err_field_name) > 0
      *                                   var_err_field_name = @err_field_name + ','
      *                               if len(@err_field_value) > 0
      *                                   var_err_field_value = @err_field_value + ','
      *                               var_err_field_name = @err_field_name + 'field_required'
      *                               var_err_field_value = @err_field_value + 'null'
      *                           end
      *   
      *                           if @primary_key is null
      *                           begin
      *                               if len(@err_field_name) > 0
      *                                   var_err_field_name = @err_field_name + ','
      *                               if len(@err_field_value) > 0
      *                                   var_err_field_value = @err_field_value + ','
      *                               var_err_field_name = @err_field_name + 'primary_key'
      *                               var_err_field_value = @err_field_value + 'null'
      *                           end
      *   
      *                           if @foreign_key is null
      *                           begin
      *                               if len(@err_field_name) > 0
      *                                   var_err_field_name = @err_field_name + ','
      *                               if len(@err_field_value) > 0
      *                                   var_err_field_value = @err_field_value + ','
      *                               var_err_field_name = @err_field_name + 'foreign_key'
      *                               var_err_field_value = @err_field_value + 'null'
      *                           end
      *   
      *                           insert into arg_metadata_errors (
      *                               err_code, err_table_name, pk1_field_value, pk2_field_value,
      *                               err_field_name, err_field_value, err_message, err_resolution
      *                               ) values(
      *                               @err_code, @err_table_name, @pk1_field_value, @pk2_field_value,
      *                               @err_field_name, @err_field_value, @err_message, @err_resolution
      *                               )
      *                       end
      *                       fetch next from err_records INTO
      *                           @table_name, @field_name, @data_type, @data_size, @field_required, @primary_key, @foreign_key
      *                       end
      *                       close err_records
      *                       deallocate err_records
      *
      */

      SET @var_err_code = 208

      SET @var_err_message = 'Warning: data_type, data_size, field_required, primary_key and foreign_key must be null for a view'

      SET @var_err_resolution = 'set field attributes to null'

      SET @var_err_table_name = 'arg_field_def'

      SET @var_err_field_name = NULL

      SET @var_pk1_field_value = NULL

      SET @var_pk2_field_value = NULL

      SET @var_err_field_value = NULL

      
      /*
      *    ???
      *                       declare cursor err_records is
      *                           select table_name, field_name,
      *                           data_type, data_size, field_required, primary_key, foreign_key from arg_field_def
      *                           where table_name in (select table_name from arg_table_def where virtual_table = 1)
      *                           and (data_type is not null or data_size is not null or field_required is not null
      *                           or primary_key is not null or foreign_key is not null);
      *                       open err_records
      *                       fetch next from err_records INTO
      *                           @table_name, @field_name, @data_type, @data_size, @field_required, @primary_key, @foreign_key
      *                       while (@@fetch_status <> -1)
      *                       begin
      *                       if (@@fetch_status <> -2)
      *                       begin    
      *   
      *                           var_pk1_field_value = @table_name
      *                           var_pk2_field_value = @field_name
      *                           var_err_field_name = ' '
      *                           var_err_field_value = ' '
      *   
      *                           if @data_type is not null
      *                           begin
      *                               var_err_field_name = 'data_type'
      *                               var_err_field_value = @data_type
      *                           end
      *   
      *                           if @data_size is not null
      *                           begin
      *                               if len(@err_field_name) > 0
      *                                   var_err_field_name = @err_field_name + ','
      *                               if len(@err_field_value) > 0
      *                                   var_err_field_value = @err_field_value + ','
      *                               var_err_field_name = @err_field_name + 'data_size'
      *                               var_err_field_value = @err_field_value + str(@data_size)
      *                           end
      *   
      *                           if @field_required is not null
      *                           begin
      *                               if len(@err_field_name) > 0
      *                                   var_err_field_name = @err_field_name + ','
      *                               if len(@err_field_value) > 0
      *                                   var_err_field_value = @err_field_value + ','
      *                               var_err_field_name = @err_field_name + 'field_required'
      *                               var_err_field_value = @err_field_value + str(@field_required)
      *   
      *                           end
      *   
      *                           if @primary_key is not null
      *                           begin
      *                               if len(@err_field_name) > 0
      *                                   var_err_field_name = @err_field_name + ','
      *                               if len(@err_field_value) > 0
      *                                   var_err_field_value = @err_field_value + ','
      *                               var_err_field_name = @err_field_name + 'primary_key'
      *                               var_err_field_value = @err_field_value + str(@primary_key)
      *                           end
      *   
      *                           if @foreign_key is not null
      *                           begin
      *                               if len(@err_field_name) > 0
      *                                   var_err_field_name = @err_field_name + ','
      *                               if len(@err_field_value) > 0
      *                                   var_err_field_value = @err_field_value + ','
      *                               var_err_field_name = @err_field_name + 'foreign_key'
      *                               var_err_field_value = @err_field_value + str(@foreign_key)
      *                           end
      *   
      *                           insert into arg_metadata_warnings (
      *                               err_code, err_table_name, pk1_field_value, pk2_field_value,
      *                               err_field_name, err_field_value, err_message, err_resolution
      *                               ) values(
      *                               @err_code, @err_table_name, @pk1_field_value, @pk2_field_value,
      *                               @err_field_name, @err_field_value, @err_message, @err_resolution
      *                               )
      *                       end
      *                       fetch next from err_records INTO
      *                           @table_name, @field_name, @data_type, @data_size, @field_required, @primary_key, @foreign_key
      *                       end
      *                       close err_records
      *                       deallocate err_records
      *
      *    no longer a rule in Anderson
      *                       var_err_code         := 209;
      *                       var_err_message     := 'ishierarchy is required for field record';
      *                       var_err_resolution     := 'specify ishierarchy value (use 0 instead of null)';
      *                       var_err_table_name     := 'arg_field_def';
      *                       var_err_field_name     := 'ishierarchy';
      *                       var_pk1_field_value     := null;
      *                       var_pk2_field_value     := null;
      *                       var_err_field_value     := null;
      *                       declare cursor err_records is
      *                           select table_name, field_name, ishierarchy from arg_field_def
      *                           where ishierarchy is null;
      *                       begin
      *                           open err_records;
      *                           loop
      *                           fetch err_records into var_pk1_field_value,var_pk2_field_value,var_err_field_value;
      *                           exit when err_records%NOTFOUND;
      *                               insert into arg_metadata_errors (err_code,err_table_name,pk1_field_value,pk2_field_value,err_field_name,err_field_value,err_message,err_resolution)
      *                               values(var_err_code,var_err_table_name,var_pk1_field_value,var_pk2_field_value,var_err_field_name,var_err_field_value,var_err_message,var_err_resolution);
      *                           end loop;
      *                           close err_records;
      *                       end;
      *
      */

      SET @var_err_code = 210

      SET @var_err_message = 'field does not exist in table'

      SET @var_err_resolution = 'add field to table or remove arg_field_def record'

      SET @var_err_table_name = 'arg_field_def'

      SET @var_err_field_name = 'field_name'

      SET @var_pk1_field_value = NULL

      SET @var_pk2_field_value = NULL

      SET @var_err_field_value = NULL

      
      /*
      *       declare cursor err_records is
      *                           select fd.table_name, fd.field_name from arg_field_def fd
      *                           left outer join sysobjects o on o.name = fd.table_name
      *                           left outer join syscolumns c on c.id = o.id and c.name = fd.field_name
      *                           where o.name is null
      *                           and fd.table_name not in (select table_name from arg_table_def where virtual_table = 1);
      *                       begin
      *                           open err_records;
      *                           loop
      *                           fetch err_records into var_pk1_field_value,var_pk2_field_value;
      *                           exit when err_records%NOTFOUND;
      *                               insert into arg_metadata_errors (err_code,err_table_name,pk1_field_value,pk2_field_value,err_field_name,err_field_value,err_message,err_resolution)
      *                               values(var_err_code,var_err_table_name,var_pk1_field_value,var_pk2_field_value,var_err_field_name,var_err_field_value,var_err_message,var_err_resolution);
      *                           end loop;
      *                           close err_records;
      *                       end;
      *
      */

      SET @var_err_code = 211

      SET @var_err_message = 'data_size does not match field size'

      SET @var_err_resolution = 'correct data_size value'

      SET @var_err_table_name = 'arg_field_def'

      SET @var_err_field_name = 'data_size'

      SET @var_pk1_field_value = NULL

      SET @var_pk2_field_value = NULL

      SET @var_err_field_value = NULL

      
      /*
      *       declare cursor err_records is
      *                           select fd.table_name, fd.field_name, fd.data_size from arg_field_def fd
      *                           left outer join sysobjects o on o.name = fd.table_name
      *                           left outer join syscolumns c on c.id = o.id and c.name = fd.field_name
      *                           where o.name is null
      *                           and fd.table_name not in (select table_name from arg_table_def where virtual_table = 1)
      *                           and c.xusertype in (167, 175, 231, 239, 165, 173) and fd.data_size <> c.prec;
      *                       begin
      *                           open err_records;
      *                           loop
      *                           fetch err_records into var_pk1_field_value,var_pk2_field_value,var_err_field_value;
      *                           exit when err_records%NOTFOUND;
      *                               insert into arg_metadata_errors (err_code,err_table_name,pk1_field_value,pk2_field_value,err_field_name,err_field_value,err_message,err_resolution)
      *                               values(var_err_code,var_err_table_name,var_pk1_field_value,var_pk2_field_value,var_err_field_name,var_err_field_value,var_err_message,var_err_resolution);
      *                           end loop;
      *                           close err_records;
      *                       end;
      *
      */

      SET @var_err_code = 212

      SET @var_err_message = 'data_size not specified for field'

      SET @var_err_resolution = 'correct data_size value'

      SET @var_err_table_name = 'arg_field_def'

      SET @var_err_field_name = 'data_size'

      SET @var_pk1_field_value = NULL

      SET @var_pk2_field_value = NULL

      SET @var_err_field_value = NULL

      BEGIN

         DECLARE
             err_records CURSOR LOCAL FOR
               SELECT ARG_FIELD_DEF.TABLE_NAME, ARG_FIELD_DEF.FIELD_NAME, ARG_FIELD_DEF.DATA_SIZE
               FROM dbo.ARG_FIELD_DEF
               WHERE ARG_FIELD_DEF.DATA_TYPE IN ( 9, 10 ) AND ARG_FIELD_DEF.DATA_SIZE = 0

         OPEN err_records

         WHILE 1 = 1
         
            BEGIN

               FETCH err_records
                   INTO @var_pk1_field_value, @var_pk2_field_value, @var_err_field_value

               /*
               *   SSMA warning messages:
               *   O2SS0113: The value of @@FETCH_STATUS might be changed by previous FETCH operations on other cursors, if the cursors are used simultaneously.
               */


               IF @@FETCH_STATUS <> 0
                  BREAK

               INSERT dbo.ARG_METADATA_ERRORS(
                  ERR_CODE,
                  ERR_TABLE_NAME,
                  PK1_FIELD_VALUE,
                  PK2_FIELD_VALUE,
                  ERR_FIELD_NAME,
                  ERR_FIELD_VALUE,
                  ERR_MESSAGE,
                  ERR_RESOLUTION)
                  VALUES (
                     @var_err_code,
                     @var_err_table_name,
                     @var_pk1_field_value,
                     @var_pk2_field_value,
                     @var_err_field_name,
                     @var_err_field_value,
                     @var_err_message,
                     @var_err_resolution)

            END

         CLOSE err_records

         DEALLOCATE err_records

      END

      SET @var_err_code = 213

      SET @var_err_message = 'data_size should be 0 for given data_type'

      SET @var_err_resolution = 'correct data_size value'

      SET @var_err_table_name = 'arg_field_def'

      SET @var_err_field_name = 'data_size'

      SET @var_pk1_field_value = NULL

      SET @var_pk2_field_value = NULL

      SET @var_err_field_value = NULL

      BEGIN

         DECLARE
             err_records CURSOR LOCAL FOR
               SELECT ARG_FIELD_DEF.TABLE_NAME, ARG_FIELD_DEF.FIELD_NAME, ARG_FIELD_DEF.DATA_SIZE
               FROM dbo.ARG_FIELD_DEF
               WHERE ARG_FIELD_DEF.DATA_TYPE NOT IN ( 9, 10 ) AND ARG_FIELD_DEF.DATA_SIZE <> 0

         OPEN err_records

         WHILE 1 = 1
         
            BEGIN

               FETCH err_records
                   INTO @var_pk1_field_value, @var_pk2_field_value, @var_err_field_value

               /*
               *   SSMA warning messages:
               *   O2SS0113: The value of @@FETCH_STATUS might be changed by previous FETCH operations on other cursors, if the cursors are used simultaneously.
               */


               IF @@FETCH_STATUS <> 0
                  BREAK

               INSERT dbo.ARG_METADATA_ERRORS(
                  ERR_CODE,
                  ERR_TABLE_NAME,
                  PK1_FIELD_VALUE,
                  PK2_FIELD_VALUE,
                  ERR_FIELD_NAME,
                  ERR_FIELD_VALUE,
                  ERR_MESSAGE,
                  ERR_RESOLUTION)
                  VALUES (
                     @var_err_code,
                     @var_err_table_name,
                     @var_pk1_field_value,
                     @var_pk2_field_value,
                     @var_err_field_name,
                     @var_err_field_value,
                     @var_err_message,
                     @var_err_resolution)

            END

         CLOSE err_records

         DEALLOCATE err_records

      END

      /***** 300-399 arg_index_def and arg_index_member errors *****/
      SET @var_err_code = 300

      SET @var_err_message = 'table_name does not exist in arg_table_def'

      SET @var_err_resolution = 'correct field value or add table record'

      SET @var_err_table_name = 'arg_index_def'

      SET @var_err_field_name = 'table_name'

      SET @var_pk1_field_value = NULL

      SET @var_pk2_field_value = NULL

      SET @var_err_field_value = NULL

      BEGIN

         DECLARE
             err_records CURSOR LOCAL FOR
               SELECT id.INDEX_NAME, id.TABLE_NAME
               FROM
                  dbo.ARG_INDEX_DEF  AS id
                     FULL OUTER JOIN dbo.ARG_TABLE_DEF  AS td
                     ON td.TABLE_NAME = id.TABLE_NAME
               WHERE id.TABLE_NAME IS NOT NULL AND td.TABLE_NAME IS NULL

         OPEN err_records

         WHILE 1 = 1
         
            BEGIN

               FETCH err_records
                   INTO @var_pk1_field_value, @var_err_field_value

               /*
               *   SSMA warning messages:
               *   O2SS0113: The value of @@FETCH_STATUS might be changed by previous FETCH operations on other cursors, if the cursors are used simultaneously.
               */


               IF @@FETCH_STATUS <> 0
                  BREAK

               INSERT dbo.ARG_METADATA_ERRORS(
                  ERR_CODE,
                  ERR_TABLE_NAME,
                  PK1_FIELD_VALUE,
                  PK2_FIELD_VALUE,
                  ERR_FIELD_NAME,
                  ERR_FIELD_VALUE,
                  ERR_MESSAGE,
                  ERR_RESOLUTION)
                  VALUES (
                     @var_err_code,
                     @var_err_table_name,
                     @var_pk1_field_value,
                     @var_pk2_field_value,
                     @var_err_field_name,
                     @var_err_field_value,
                     @var_err_message,
                     @var_err_resolution)

            END

         CLOSE err_records

         DEALLOCATE err_records

      END

      SET @var_err_code = 301

      SET @var_err_message = 'table_name does not exist in arg_table_def'

      SET @var_err_resolution = 'correct field value or add table record'

      SET @var_err_table_name = 'arg_index_member'

      SET @var_err_field_name = 'table_name'

      SET @var_pk1_field_value = NULL

      SET @var_pk2_field_value = NULL

      SET @var_err_field_value = NULL

      BEGIN

         DECLARE
             err_records CURSOR LOCAL FOR
               SELECT im.INDEX_NAME, im.MEMBER_INSTANCE, im.TABLE_NAME
               FROM
                  dbo.ARG_INDEX_MEMBER  AS im
                     FULL OUTER JOIN dbo.ARG_TABLE_DEF  AS td
                     ON td.TABLE_NAME = im.TABLE_NAME
               WHERE im.TABLE_NAME IS NOT NULL AND td.TABLE_NAME IS NULL

         OPEN err_records

         WHILE 1 = 1
         
            BEGIN

               FETCH err_records
                   INTO @var_pk1_field_value, @var_pk2_field_value, @var_err_field_value

               /*
               *   SSMA warning messages:
               *   O2SS0113: The value of @@FETCH_STATUS might be changed by previous FETCH operations on other cursors, if the cursors are used simultaneously.
               */


               IF @@FETCH_STATUS <> 0
                  BREAK

               INSERT dbo.ARG_METADATA_ERRORS(
                  ERR_CODE,
                  ERR_TABLE_NAME,
                  PK1_FIELD_VALUE,
                  PK2_FIELD_VALUE,
                  ERR_FIELD_NAME,
                  ERR_FIELD_VALUE,
                  ERR_MESSAGE,
                  ERR_RESOLUTION)
                  VALUES (
                     @var_err_code,
                     @var_err_table_name,
                     @var_pk1_field_value,
                     @var_pk2_field_value,
                     @var_err_field_name,
                     @var_err_field_value,
                     @var_err_message,
                     @var_err_resolution)

            END

         CLOSE err_records

         DEALLOCATE err_records

      END

      SET @var_err_code = 302

      SET @var_err_message = 'field_name does not exist in arg_field_def'

      SET @var_err_resolution = 'correct field value or add field record'

      SET @var_err_table_name = 'arg_index_member'

      SET @var_err_field_name = 'field_name'

      SET @var_pk1_field_value = NULL

      SET @var_pk2_field_value = NULL

      SET @var_err_field_value = NULL

      BEGIN

         DECLARE
             err_records CURSOR LOCAL FOR
               SELECT im.INDEX_NAME, im.MEMBER_INSTANCE, im.FIELD_NAME
               FROM
                  dbo.ARG_INDEX_MEMBER  AS im
                     FULL OUTER JOIN dbo.ARG_FIELD_DEF  AS fd
                     ON fd.TABLE_NAME = im.TABLE_NAME AND fd.FIELD_NAME = im.FIELD_NAME
               WHERE im.FIELD_NAME IS NOT NULL AND fd.FIELD_NAME IS NULL

         OPEN err_records

         WHILE 1 = 1
         
            BEGIN

               FETCH err_records
                   INTO @var_pk1_field_value, @var_pk2_field_value, @var_err_field_value

               /*
               *   SSMA warning messages:
               *   O2SS0113: The value of @@FETCH_STATUS might be changed by previous FETCH operations on other cursors, if the cursors are used simultaneously.
               */


               IF @@FETCH_STATUS <> 0
                  BREAK

               INSERT dbo.ARG_METADATA_ERRORS(
                  ERR_CODE,
                  ERR_TABLE_NAME,
                  PK1_FIELD_VALUE,
                  PK2_FIELD_VALUE,
                  ERR_FIELD_NAME,
                  ERR_FIELD_VALUE,
                  ERR_MESSAGE,
                  ERR_RESOLUTION)
                  VALUES (
                     @var_err_code,
                     @var_err_table_name,
                     @var_pk1_field_value,
                     @var_pk2_field_value,
                     @var_err_field_name,
                     @var_err_field_value,
                     @var_err_message,
                     @var_err_resolution)

            END

         CLOSE err_records

         DEALLOCATE err_records

      END

      SET @var_err_code = 303

      SET @var_err_message = 'index_name does not exist in arg_index_def'

      SET @var_err_resolution = 'correct field value or add index def record'

      SET @var_err_table_name = 'arg_index_member'

      SET @var_err_field_name = 'index_name'

      SET @var_pk1_field_value = NULL

      SET @var_pk2_field_value = NULL

      SET @var_err_field_value = NULL

      BEGIN

         DECLARE
             err_records CURSOR LOCAL FOR
               SELECT im.INDEX_NAME, im.MEMBER_INSTANCE
               FROM
                  dbo.ARG_INDEX_MEMBER  AS im
                     FULL OUTER JOIN dbo.ARG_INDEX_DEF  AS id
                     ON id.INDEX_NAME = im.INDEX_NAME
               WHERE im.INDEX_NAME IS NOT NULL AND id.INDEX_NAME IS NULL

         OPEN err_records

         WHILE 1 = 1
         
            BEGIN

               FETCH err_records
                   INTO @var_pk1_field_value, @var_pk2_field_value

               /*
               *   SSMA warning messages:
               *   O2SS0113: The value of @@FETCH_STATUS might be changed by previous FETCH operations on other cursors, if the cursors are used simultaneously.
               */


               IF @@FETCH_STATUS <> 0
                  BREAK

               INSERT dbo.ARG_METADATA_ERRORS(
                  ERR_CODE,
                  ERR_TABLE_NAME,
                  PK1_FIELD_VALUE,
                  PK2_FIELD_VALUE,
                  ERR_FIELD_NAME,
                  ERR_FIELD_VALUE,
                  ERR_MESSAGE,
                  ERR_RESOLUTION)
                  VALUES (
                     @var_err_code,
                     @var_err_table_name,
                     @var_pk1_field_value,
                     @var_pk2_field_value,
                     @var_err_field_name,
                     @var_err_field_value,
                     @var_err_message,
                     @var_err_resolution)

            END

         CLOSE err_records

         DEALLOCATE err_records

      END

      SET @var_err_code = 304

      SET @var_err_message = 'index_name does not exist in arg_index_member'

      SET @var_err_resolution = 'correct field value or add index member record'

      SET @var_err_table_name = 'arg_index_def'

      SET @var_err_field_name = 'index_name'

      SET @var_pk1_field_value = NULL

      SET @var_pk2_field_value = NULL

      SET @var_err_field_value = NULL

      BEGIN

         DECLARE
             err_records CURSOR LOCAL FOR
               SELECT id.INDEX_NAME
               FROM
                  dbo.ARG_INDEX_DEF  AS id
                     FULL OUTER JOIN dbo.ARG_INDEX_MEMBER  AS im
                     ON im.INDEX_NAME = id.INDEX_NAME
               WHERE
                  id.INDEX_NAME IS NOT NULL AND
                  im.INDEX_NAME IS NULL AND
                  id.INDEX_NAME NOT LIKE '_WA_Sys_%'

         OPEN err_records

         WHILE 1 = 1
         
            BEGIN

               FETCH err_records
                   INTO @var_pk1_field_value

               /*
               *   SSMA warning messages:
               *   O2SS0113: The value of @@FETCH_STATUS might be changed by previous FETCH operations on other cursors, if the cursors are used simultaneously.
               */


               IF @@FETCH_STATUS <> 0
                  BREAK

               INSERT dbo.ARG_METADATA_ERRORS(
                  ERR_CODE,
                  ERR_TABLE_NAME,
                  PK1_FIELD_VALUE,
                  PK2_FIELD_VALUE,
                  ERR_FIELD_NAME,
                  ERR_FIELD_VALUE,
                  ERR_MESSAGE,
                  ERR_RESOLUTION)
                  VALUES (
                     @var_err_code,
                     @var_err_table_name,
                     @var_pk1_field_value,
                     @var_pk2_field_value,
                     @var_err_field_name,
                     @var_err_field_value,
                     @var_err_message,
                     @var_err_resolution)

            END

         CLOSE err_records

         DEALLOCATE err_records

      END

      /***** 400-499 arg_join_def and arg_join_member errors *****/
      SET @var_err_code = 400

      SET @var_err_message = 'left_side_table does not exist in arg_table_def'

      SET @var_err_resolution = 'correct field value or add table record'

      SET @var_err_table_name = 'arg_join_member'

      SET @var_err_field_name = 'left_side_table'

      SET @var_pk1_field_value = NULL

      SET @var_pk2_field_value = NULL

      SET @var_err_field_value = NULL

      BEGIN

         DECLARE
             err_records CURSOR LOCAL FOR
               SELECT jm.JOIN_NAME, jm.MEMBER_INSTANCE, jm.LEFT_SIDE_TABLE
               FROM
                  dbo.ARG_JOIN_MEMBER  AS jm
                     FULL OUTER JOIN dbo.ARG_TABLE_DEF  AS td
                     ON td.TABLE_NAME = jm.LEFT_SIDE_TABLE
               WHERE jm.LEFT_SIDE_TABLE IS NOT NULL AND td.TABLE_NAME IS NULL

         OPEN err_records

         WHILE 1 = 1
         
            BEGIN

               FETCH err_records
                   INTO @var_pk1_field_value, @var_pk2_field_value, @var_err_field_value

               /*
               *   SSMA warning messages:
               *   O2SS0113: The value of @@FETCH_STATUS might be changed by previous FETCH operations on other cursors, if the cursors are used simultaneously.
               */


               IF @@FETCH_STATUS <> 0
                  BREAK

               INSERT dbo.ARG_METADATA_ERRORS(
                  ERR_CODE,
                  ERR_TABLE_NAME,
                  PK1_FIELD_VALUE,
                  PK2_FIELD_VALUE,
                  ERR_FIELD_NAME,
                  ERR_FIELD_VALUE,
                  ERR_MESSAGE,
                  ERR_RESOLUTION)
                  VALUES (
                     @var_err_code,
                     @var_err_table_name,
                     @var_pk1_field_value,
                     @var_pk2_field_value,
                     @var_err_field_name,
                     @var_err_field_value,
                     @var_err_message,
                     @var_err_resolution)

            END

         CLOSE err_records

         DEALLOCATE err_records

      END

      SET @var_err_code = 401

      SET @var_err_message = 'left_side_field does not exist in arg_field_def'

      SET @var_err_resolution = 'correct field value or add field record'

      SET @var_err_table_name = 'arg_join_member'

      SET @var_err_field_name = 'left_side_field'

      SET @var_pk1_field_value = NULL

      SET @var_pk2_field_value = NULL

      SET @var_err_field_value = NULL

      BEGIN

         DECLARE
             err_records CURSOR LOCAL FOR
               SELECT jm.JOIN_NAME, jm.MEMBER_INSTANCE, jm.LEFT_SIDE_FIELD
               FROM
                  dbo.ARG_JOIN_MEMBER  AS jm
                     FULL OUTER JOIN dbo.ARG_FIELD_DEF  AS fd
                     ON fd.TABLE_NAME = jm.LEFT_SIDE_TABLE AND fd.FIELD_NAME = jm.LEFT_SIDE_FIELD
               WHERE jm.LEFT_SIDE_FIELD IS NOT NULL AND fd.FIELD_NAME IS NULL

         OPEN err_records

         WHILE 1 = 1
         
            BEGIN

               FETCH err_records
                   INTO @var_pk1_field_value, @var_pk2_field_value, @var_err_field_value

               /*
               *   SSMA warning messages:
               *   O2SS0113: The value of @@FETCH_STATUS might be changed by previous FETCH operations on other cursors, if the cursors are used simultaneously.
               */


               IF @@FETCH_STATUS <> 0
                  BREAK

               INSERT dbo.ARG_METADATA_ERRORS(
                  ERR_CODE,
                  ERR_TABLE_NAME,
                  PK1_FIELD_VALUE,
                  PK2_FIELD_VALUE,
                  ERR_FIELD_NAME,
                  ERR_FIELD_VALUE,
                  ERR_MESSAGE,
                  ERR_RESOLUTION)
                  VALUES (
                     @var_err_code,
                     @var_err_table_name,
                     @var_pk1_field_value,
                     @var_pk2_field_value,
                     @var_err_field_name,
                     @var_err_field_value,
                     @var_err_message,
                     @var_err_resolution)

            END

         CLOSE err_records

         DEALLOCATE err_records

      END

      SET @var_err_code = 402

      SET @var_err_message = 'right_side_table does not exist in arg_table_def'

      SET @var_err_resolution = 'correct field value or add table record'

      SET @var_err_table_name = 'arg_join_member'

      SET @var_err_field_name = 'right_side_table'

      SET @var_pk1_field_value = NULL

      SET @var_pk2_field_value = NULL

      SET @var_err_field_value = NULL

      BEGIN

         DECLARE
             err_records CURSOR LOCAL FOR
               SELECT jm.JOIN_NAME, jm.MEMBER_INSTANCE, jm.RIGHT_SIDE_TABLE
               FROM
                  dbo.ARG_JOIN_MEMBER  AS jm
                     FULL OUTER JOIN dbo.ARG_TABLE_DEF  AS td
                     ON td.TABLE_NAME = jm.RIGHT_SIDE_TABLE
               WHERE jm.RIGHT_SIDE_TABLE IS NOT NULL AND td.TABLE_NAME IS NULL

         OPEN err_records

         WHILE 1 = 1
         
            BEGIN

               FETCH err_records
                   INTO @var_pk1_field_value, @var_pk2_field_value, @var_err_field_value

               /*
               *   SSMA warning messages:
               *   O2SS0113: The value of @@FETCH_STATUS might be changed by previous FETCH operations on other cursors, if the cursors are used simultaneously.
               */


               IF @@FETCH_STATUS <> 0
                  BREAK

               INSERT dbo.ARG_METADATA_ERRORS(
                  ERR_CODE,
                  ERR_TABLE_NAME,
                  PK1_FIELD_VALUE,
                  PK2_FIELD_VALUE,
                  ERR_FIELD_NAME,
                  ERR_FIELD_VALUE,
                  ERR_MESSAGE,
                  ERR_RESOLUTION)
                  VALUES (
                     @var_err_code,
                     @var_err_table_name,
                     @var_pk1_field_value,
                     @var_pk2_field_value,
                     @var_err_field_name,
                     @var_err_field_value,
                     @var_err_message,
                     @var_err_resolution)

            END

         CLOSE err_records

         DEALLOCATE err_records

      END

      SET @var_err_code = 403

      SET @var_err_message = 'right_side_field does not exist in arg_field_def'

      SET @var_err_resolution = 'correct field value or add field record'

      SET @var_err_table_name = 'arg_join_member'

      SET @var_err_field_name = 'right_side_field'

      SET @var_pk1_field_value = NULL

      SET @var_pk2_field_value = NULL

      SET @var_err_field_value = NULL

      BEGIN

         DECLARE
             err_records CURSOR LOCAL FOR
               SELECT jm.JOIN_NAME, jm.MEMBER_INSTANCE, jm.RIGHT_SIDE_FIELD
               FROM
                  dbo.ARG_JOIN_MEMBER  AS jm
                     FULL OUTER JOIN dbo.ARG_FIELD_DEF  AS fd
                     ON fd.TABLE_NAME = jm.RIGHT_SIDE_TABLE AND fd.FIELD_NAME = jm.RIGHT_SIDE_FIELD
               WHERE jm.RIGHT_SIDE_FIELD IS NOT NULL AND fd.FIELD_NAME IS NULL

         OPEN err_records

         WHILE 1 = 1
         
            BEGIN

               FETCH err_records
                   INTO @var_pk1_field_value, @var_pk2_field_value, @var_err_field_value

               /*
               *   SSMA warning messages:
               *   O2SS0113: The value of @@FETCH_STATUS might be changed by previous FETCH operations on other cursors, if the cursors are used simultaneously.
               */


               IF @@FETCH_STATUS <> 0
                  BREAK

               INSERT dbo.ARG_METADATA_ERRORS(
                  ERR_CODE,
                  ERR_TABLE_NAME,
                  PK1_FIELD_VALUE,
                  PK2_FIELD_VALUE,
                  ERR_FIELD_NAME,
                  ERR_FIELD_VALUE,
                  ERR_MESSAGE,
                  ERR_RESOLUTION)
                  VALUES (
                     @var_err_code,
                     @var_err_table_name,
                     @var_pk1_field_value,
                     @var_pk2_field_value,
                     @var_err_field_name,
                     @var_err_field_value,
                     @var_err_message,
                     @var_err_resolution)

            END

         CLOSE err_records

         DEALLOCATE err_records

      END

      SET @var_err_code = 404

      SET @var_err_message = 'join_name does not exist in arg_join_def'

      SET @var_err_resolution = 'correct field value or add join def record'

      SET @var_err_table_name = 'arg_join_member'

      SET @var_err_field_name = 'join_name'

      SET @var_pk1_field_value = NULL

      SET @var_pk2_field_value = NULL

      SET @var_err_field_value = NULL

      BEGIN

         DECLARE
             err_records CURSOR LOCAL FOR
               SELECT jm.JOIN_NAME, jm.MEMBER_INSTANCE
               FROM
                  dbo.ARG_JOIN_MEMBER  AS jm
                     FULL OUTER JOIN dbo.ARG_JOIN_DEF  AS jd
                     ON jd.JOIN_NAME = jm.JOIN_NAME
               WHERE jm.JOIN_NAME IS NOT NULL AND jd.JOIN_NAME IS NULL

         OPEN err_records

         WHILE 1 = 1
         
            BEGIN

               FETCH err_records
                   INTO @var_pk1_field_value, @var_pk2_field_value

               /*
               *   SSMA warning messages:
               *   O2SS0113: The value of @@FETCH_STATUS might be changed by previous FETCH operations on other cursors, if the cursors are used simultaneously.
               */


               IF @@FETCH_STATUS <> 0
                  BREAK

               INSERT dbo.ARG_METADATA_ERRORS(
                  ERR_CODE,
                  ERR_TABLE_NAME,
                  PK1_FIELD_VALUE,
                  PK2_FIELD_VALUE,
                  ERR_FIELD_NAME,
                  ERR_FIELD_VALUE,
                  ERR_MESSAGE,
                  ERR_RESOLUTION)
                  VALUES (
                     @var_err_code,
                     @var_err_table_name,
                     @var_pk1_field_value,
                     @var_pk2_field_value,
                     @var_err_field_name,
                     @var_err_field_value,
                     @var_err_message,
                     @var_err_resolution)

            END

         CLOSE err_records

         DEALLOCATE err_records

      END

      SET @var_err_code = 405

      SET @var_err_message = 'join_name does not exist in arg_join_member'

      SET @var_err_resolution = 'correct field value or add join member record'

      SET @var_err_table_name = 'arg_join_def'

      SET @var_err_field_name = 'join_name'

      SET @var_pk1_field_value = NULL

      SET @var_pk2_field_value = NULL

      SET @var_err_field_value = NULL

      BEGIN

         DECLARE
             err_records CURSOR LOCAL FOR
               SELECT jd.JOIN_NAME
               FROM
                  dbo.ARG_JOIN_DEF  AS jd
                     FULL OUTER JOIN dbo.ARG_JOIN_MEMBER  AS jm
                     ON jm.JOIN_NAME = jd.JOIN_NAME
               WHERE jd.JOIN_NAME IS NOT NULL AND jm.JOIN_NAME IS NULL

         OPEN err_records

         WHILE 1 = 1
         
            BEGIN

               FETCH err_records
                   INTO @var_pk1_field_value

               /*
               *   SSMA warning messages:
               *   O2SS0113: The value of @@FETCH_STATUS might be changed by previous FETCH operations on other cursors, if the cursors are used simultaneously.
               */


               IF @@FETCH_STATUS <> 0
                  BREAK

               INSERT dbo.ARG_METADATA_ERRORS(
                  ERR_CODE,
                  ERR_TABLE_NAME,
                  PK1_FIELD_VALUE,
                  PK2_FIELD_VALUE,
                  ERR_FIELD_NAME,
                  ERR_FIELD_VALUE,
                  ERR_MESSAGE,
                  ERR_RESOLUTION)
                  VALUES (
                     @var_err_code,
                     @var_err_table_name,
                     @var_pk1_field_value,
                     @var_pk2_field_value,
                     @var_err_field_name,
                     @var_err_field_value,
                     @var_err_message,
                     @var_err_resolution)

            END

         CLOSE err_records

         DEALLOCATE err_records

      END

   END
GO
Uses
Used By