CREATE PROCEDURE [dbo].[pOperating_System_DATA] @Pragma int ,@MachineID int ,@TimeKey datetime ,@AgentID int ,@BootDevice00 nvarchar(255) =NULL,@BuildNumber00 nvarchar(255) =NULL,@BuildType00 nvarchar(255) =NULL,@Caption00 nvarchar(255) =NULL,@CodeSet00 nvarchar(255) =NULL,@CountryCode00 nvarchar(255) =NULL,@CSDVersion00 nvarchar(255) =NULL,@CurrentTimeZone00 int  =NULL,@Debug00 int  =NULL,@Description00 nvarchar(255) =NULL,@Distributed00 int  =NULL,@ForegroundApplicationBoost00 int  =NULL,@FreePhysicalMemory00 bigint  =NULL,@FreeSpaceInPagingFiles00 bigint  =NULL,@FreeVirtualMemory00 bigint  =NULL,@InstallDate00 datetime  =NULL,@LastBootUpTime00 datetime  =NULL,@LocalDateTime00 datetime  =NULL,@Locale00 nvarchar(255) =NULL,@Manufacturer00 nvarchar(255) =NULL,@MaxNumberOfProcesses00 int  =NULL,@MaxProcessMemorySize00 bigint  =NULL,@MUILanguages00 nvarchar(255) =NULL,@Name00 nvarchar(255),@NumberOfLicensedUsers00 int  =NULL,@NumberOfProcesses00 int  =NULL,@NumberOfUsers00 int  =NULL,@OperatingSystemSKU00 int  =NULL,@Organization00 nvarchar(255) =NULL,@OSArchitecture00 nvarchar(255) =NULL,@OSLanguage00 int  =NULL,@OSProductSuite00 int  =NULL,@OSType00 int  =NULL,@OtherTypeDescription00 nvarchar(255) =NULL,@PlusProductID00 nvarchar(255) =NULL,@PlusVersionNumber00 nvarchar(255) =NULL,@Primary00 int  =NULL,@ProductType00 int  =NULL,@RegisteredUser00 nvarchar(255) =NULL,@SerialNumber00 nvarchar(255) =NULL,@ServicePackMajorVersion00 int  =NULL,@ServicePackMinorVersion00 int  =NULL,@SizeStoredInPagingFiles00 bigint  =NULL,@Status00 nvarchar(255) =NULL,@SystemDevice00 nvarchar(255) =NULL,@SystemDirectory00 nvarchar(255) =NULL,@TotalSwapSpaceSize00 bigint  =NULL,@TotalVirtualMemorySize00 bigint  =NULL,@TotalVisibleMemorySize00 bigint  =NULL,@Version00 nvarchar(255) =NULL,@WindowsDirectory00 nvarchar(255) =NULL AS 
 BEGIN 
    set nocount on 
    declare @RevisionID int, @InstanceKey int, @ExTimeKey datetime, @Deleted int 
   select @Deleted = 0 
   select @InstanceKey = InstanceKey, @RevisionID = RevisionID, @ExTimeKey = TimeKey 
   from Operating_System_DATA 
   where MachineID = @MachineID  and Name00 = @Name00
 IF (isnull(@InstanceKey,0) != 0) 
  BEGIN 
   IF EXISTS 
    ( 
     select MachineID from Operating_System_DATA
    where InstanceKey = @InstanceKey and MachineID = @MachineID  and BootDevice00 = @BootDevice00 and BuildNumber00 = @BuildNumber00 and BuildType00 = @BuildType00 and Caption00 = @Caption00 and CodeSet00 = @CodeSet00 and CountryCode00 = @CountryCode00 and CSDVersion00 = @CSDVersion00 and CurrentTimeZone00 = @CurrentTimeZone00 and Debug00 = @Debug00 and Description00 = @Description00 and Distributed00 = @Distributed00 and ForegroundApplicationBoost00 = @ForegroundApplicationBoost00 and FreePhysicalMemory00 = @FreePhysicalMemory00 and FreeSpaceInPagingFiles00 = @FreeSpaceInPagingFiles00 and FreeVirtualMemory00 = @FreeVirtualMemory00 and InstallDate00 = @InstallDate00 and LastBootUpTime00 = @LastBootUpTime00 and LocalDateTime00 = @LocalDateTime00 and Locale00 = @Locale00 and Manufacturer00 = @Manufacturer00 and MaxNumberOfProcesses00 = @MaxNumberOfProcesses00 and MaxProcessMemorySize00 = @MaxProcessMemorySize00 and MUILanguages00 = @MUILanguages00 and Name00 = @Name00 and NumberOfLicensedUsers00 = @NumberOfLicensedUsers00 and NumberOfProcesses00 = @NumberOfProcesses00 and NumberOfUsers00 = @NumberOfUsers00 and OperatingSystemSKU00 = @OperatingSystemSKU00 and Organization00 = @Organization00 and OSArchitecture00 = @OSArchitecture00 and OSLanguage00 = @OSLanguage00 and OSProductSuite00 = @OSProductSuite00 and OSType00 = @OSType00 and OtherTypeDescription00 = @OtherTypeDescription00 and PlusProductID00 = @PlusProductID00 and PlusVersionNumber00 = @PlusVersionNumber00 and Primary00 = @Primary00 and ProductType00 = @ProductType00 and RegisteredUser00 = @RegisteredUser00 and SerialNumber00 = @SerialNumber00 and ServicePackMajorVersion00 = @ServicePackMajorVersion00 and ServicePackMinorVersion00 = @ServicePackMinorVersion00 and SizeStoredInPagingFiles00 = @SizeStoredInPagingFiles00 and Status00 = @Status00 and SystemDevice00 = @SystemDevice00 and SystemDirectory00 = @SystemDirectory00 and TotalSwapSpaceSize00 = @TotalSwapSpaceSize00 and TotalVirtualMemorySize00 = @TotalVirtualMemorySize00 and TotalVisibleMemorySize00 = @TotalVisibleMemorySize00 and Version00 = @Version00 and WindowsDirectory00 = @WindowsDirectory00
    ) 
      return 
 ELSE 
   IF (@ExTimeKey > @TimeKey) 
      return 
  END 
 IF (isnull(@InstanceKey,0) = 0 ) 
 BEGIN 
    select @InstanceKey = InstanceKey  from Operating_System_HIST
 where MachineID = @MachineID  and Name00 = @Name00
 IF (isnull(@InstanceKey, 0) != 0) 
 BEGIN 
   select @Deleted = 1 
    select @RevisionID = max(RevisionID) from Operating_System_HIST where MachineID = @MachineID and InstanceKey = @InstanceKey 
 END 
 END 

 IF (isnull(@InstanceKey,0) != 0 and @Deleted = 0) 
   BEGIN 
     insert into Operating_System_HIST(MachineID, InstanceKey, RevisionID, TimeKey, AgentID, BootDevice00, BuildNumber00, BuildType00, Caption00, CodeSet00, CountryCode00, CSDVersion00, CurrentTimeZone00, Debug00, Description00, Distributed00, ForegroundApplicationBoost00, FreePhysicalMemory00, FreeSpaceInPagingFiles00, FreeVirtualMemory00, InstallDate00, LastBootUpTime00, LocalDateTime00, Locale00, Manufacturer00, MaxNumberOfProcesses00, MaxProcessMemorySize00, MUILanguages00, Name00, NumberOfLicensedUsers00, NumberOfProcesses00, NumberOfUsers00, OperatingSystemSKU00, Organization00, OSArchitecture00, OSLanguage00, OSProductSuite00, OSType00, OtherTypeDescription00, PlusProductID00, PlusVersionNumber00, Primary00, ProductType00, RegisteredUser00, SerialNumber00, ServicePackMajorVersion00, ServicePackMinorVersion00, SizeStoredInPagingFiles00, Status00, SystemDevice00, SystemDirectory00, TotalSwapSpaceSize00, TotalVirtualMemorySize00, TotalVisibleMemorySize00, Version00, WindowsDirectory00)
     select MachineID, InstanceKey, RevisionID, TimeKey, AgentID , BootDevice00, BuildNumber00, BuildType00, Caption00, CodeSet00, CountryCode00, CSDVersion00, CurrentTimeZone00, Debug00, Description00, Distributed00, ForegroundApplicationBoost00, FreePhysicalMemory00, FreeSpaceInPagingFiles00, FreeVirtualMemory00, InstallDate00, LastBootUpTime00, LocalDateTime00, Locale00, Manufacturer00, MaxNumberOfProcesses00, MaxProcessMemorySize00, MUILanguages00, Name00, NumberOfLicensedUsers00, NumberOfProcesses00, NumberOfUsers00, OperatingSystemSKU00, Organization00, OSArchitecture00, OSLanguage00, OSProductSuite00, OSType00, OtherTypeDescription00, PlusProductID00, PlusVersionNumber00, Primary00, ProductType00, RegisteredUser00, SerialNumber00, ServicePackMajorVersion00, ServicePackMinorVersion00, SizeStoredInPagingFiles00, Status00, SystemDevice00, SystemDirectory00, TotalSwapSpaceSize00, TotalVirtualMemorySize00, TotalVisibleMemorySize00, Version00, WindowsDirectory00
 from Operating_System_DATA where MachineID = @MachineID and InstanceKey = @InstanceKey 
     select @RevisionID = RevisionID from Operating_System_DATA     where MachineID = @MachineID and InstanceKey = @InstanceKey 
   END  
 IF (@RevisionID IS NULL) 
    select @RevisionID = 0 
 select @RevisionID = @RevisionID + 1 
 IF (isnull(@InstanceKey,0) = 0) 
   BEGIN 
      exec @InstanceKey = sp_GetNextInstanceKey_Internal @MachineID, 5, 15
   END 
IF EXISTS (select MachineID from Operating_System_DATA where MachineID = @MachineID and InstanceKey = @InstanceKey) 
 BEGIN 
         INSERT into HinvChangeLog(GroupKey,MachineID,InstanceKey,RevisionID,TimeKey,ChangeType) 
         VALUES(15,@MachineID,@InstanceKey,@RevisionID,@TimeKey,'U') 
     UPDATE Operating_System_DATA
     set  RevisionID = @RevisionID,  AgentID = @AgentID,  TimeKey = @TimeKey , BootDevice00 = @BootDevice00, BuildNumber00 = @BuildNumber00, BuildType00 = @BuildType00, Caption00 = @Caption00, CodeSet00 = @CodeSet00, CountryCode00 = @CountryCode00, CSDVersion00 = @CSDVersion00, CurrentTimeZone00 = @CurrentTimeZone00, Debug00 = @Debug00, Description00 = @Description00, Distributed00 = @Distributed00, ForegroundApplicationBoost00 = @ForegroundApplicationBoost00, FreePhysicalMemory00 = @FreePhysicalMemory00, FreeSpaceInPagingFiles00 = @FreeSpaceInPagingFiles00, FreeVirtualMemory00 = @FreeVirtualMemory00, InstallDate00 = @InstallDate00, LastBootUpTime00 = @LastBootUpTime00, LocalDateTime00 = @LocalDateTime00, Locale00 = @Locale00, Manufacturer00 = @Manufacturer00, MaxNumberOfProcesses00 = @MaxNumberOfProcesses00, MaxProcessMemorySize00 = @MaxProcessMemorySize00, MUILanguages00 = @MUILanguages00, Name00 = @Name00, NumberOfLicensedUsers00 = @NumberOfLicensedUsers00, NumberOfProcesses00 = @NumberOfProcesses00, NumberOfUsers00 = @NumberOfUsers00, OperatingSystemSKU00 = @OperatingSystemSKU00, Organization00 = @Organization00, OSArchitecture00 = @OSArchitecture00, OSLanguage00 = @OSLanguage00, OSProductSuite00 = @OSProductSuite00, OSType00 = @OSType00, OtherTypeDescription00 = @OtherTypeDescription00, PlusProductID00 = @PlusProductID00, PlusVersionNumber00 = @PlusVersionNumber00, Primary00 = @Primary00, ProductType00 = @ProductType00, RegisteredUser00 = @RegisteredUser00, SerialNumber00 = @SerialNumber00, ServicePackMajorVersion00 = @ServicePackMajorVersion00, ServicePackMinorVersion00 = @ServicePackMinorVersion00, SizeStoredInPagingFiles00 = @SizeStoredInPagingFiles00, Status00 = @Status00, SystemDevice00 = @SystemDevice00, SystemDirectory00 = @SystemDirectory00, TotalSwapSpaceSize00 = @TotalSwapSpaceSize00, TotalVirtualMemorySize00 = @TotalVirtualMemorySize00, TotalVisibleMemorySize00 = @TotalVisibleMemorySize00, Version00 = @Version00, WindowsDirectory00 = @WindowsDirectory00
     WHERE MachineID = @MachineID and InstanceKey = @InstanceKey 
   END 
 ELSE 
   BEGIN 
     IF ((@Pragma = 1) AND EXISTS (select IsKey from vAttributeMap where GroupKey IN (select GroupKey from vGroupMap where SpecificTablename = 'Operating_System_DATA') and IsKey=1) )
        BEGIN 
          select 2, 'pOperating_System_DATA'
          return 
        END 
     ELSE  
     BEGIN 
         INSERT into HinvChangeLog(GroupKey,MachineID,InstanceKey,RevisionID,TimeKey,ChangeType) 
         VALUES(15,@MachineID,@InstanceKey,@RevisionID,@TimeKey,'I') 
         INSERT into Operating_System_DATA (MachineID, InstanceKey, RevisionID, TimeKey, AgentID, BootDevice00, BuildNumber00, BuildType00, Caption00, CodeSet00, CountryCode00, CSDVersion00, CurrentTimeZone00, Debug00, Description00, Distributed00, ForegroundApplicationBoost00, FreePhysicalMemory00, FreeSpaceInPagingFiles00, FreeVirtualMemory00, InstallDate00, LastBootUpTime00, LocalDateTime00, Locale00, Manufacturer00, MaxNumberOfProcesses00, MaxProcessMemorySize00, MUILanguages00, Name00, NumberOfLicensedUsers00, NumberOfProcesses00, NumberOfUsers00, OperatingSystemSKU00, Organization00, OSArchitecture00, OSLanguage00, OSProductSuite00, OSType00, OtherTypeDescription00, PlusProductID00, PlusVersionNumber00, Primary00, ProductType00, RegisteredUser00, SerialNumber00, ServicePackMajorVersion00, ServicePackMinorVersion00, SizeStoredInPagingFiles00, Status00, SystemDevice00, SystemDirectory00, TotalSwapSpaceSize00, TotalVirtualMemorySize00, TotalVisibleMemorySize00, Version00, WindowsDirectory00) 
         values  (@MachineID, @InstanceKey, @RevisionID, @TimeKey, @AgentID , @BootDevice00, @BuildNumber00, @BuildType00, @Caption00, @CodeSet00, @CountryCode00, @CSDVersion00, @CurrentTimeZone00, @Debug00, @Description00, @Distributed00, @ForegroundApplicationBoost00, @FreePhysicalMemory00, @FreeSpaceInPagingFiles00, @FreeVirtualMemory00, @InstallDate00, @LastBootUpTime00, @LocalDateTime00, @Locale00, @Manufacturer00, @MaxNumberOfProcesses00, @MaxProcessMemorySize00, @MUILanguages00, @Name00, @NumberOfLicensedUsers00, @NumberOfProcesses00, @NumberOfUsers00, @OperatingSystemSKU00, @Organization00, @OSArchitecture00, @OSLanguage00, @OSProductSuite00, @OSType00, @OtherTypeDescription00, @PlusProductID00, @PlusVersionNumber00, @Primary00, @ProductType00, @RegisteredUser00, @SerialNumber00, @ServicePackMajorVersion00, @ServicePackMinorVersion00, @SizeStoredInPagingFiles00, @Status00, @SystemDevice00, @SystemDirectory00, @TotalSwapSpaceSize00, @TotalVirtualMemorySize00, @TotalVisibleMemorySize00, @Version00, @WindowsDirectory00) 
      END 
   END 
END 
