Exemplo n.º 1
0
    protected override IEnumerable <Command> OnCreate(IMetadata sourceMetadata, IMetadata targetMetadata, IComparerContext context)
    {
        var command = new PSqlCommand();

        if (context.EmptyBodiesEnabled)
        {
            command.Append($"CREATE OR ALTER PACKAGE {PackageName.AsSqlIndentifier()}");
        }
        else
        {
            command.Append($"RECREATE PACKAGE BODY {PackageName.AsSqlIndentifier()}");
        }
        if (SqlSecurity != null)
        {
            command.AppendLine();
            command.Append($"SQL SECURITY {SqlHelper.SqlSecurityString(SqlSecurity)}");
        }
        command.AppendLine();
        command.Append("AS");
        command.AppendLine();
        if (context.EmptyBodiesEnabled)
        {
            command.Append(PackageHeaderSource);
        }
        else
        {
            command.Append(PackageBodySource);
        }
        yield return(command);
    }
Exemplo n.º 2
0
 protected override IEnumerable <Command> OnDrop(IMetadata sourceMetadata, IMetadata targetMetadata, IComparerContext context)
 {
     if (context.EmptyBodiesEnabled)
     {
         yield return(new Command()
                      .Append($"DROP PACKAGE {PackageName.AsSqlIndentifier()}"));
     }
     else
     {
         yield return(new Command()
                      .Append($"DROP PACKAGE BODY {PackageName.AsSqlIndentifier()}"));
     }
 }
Exemplo n.º 3
0
    protected override IEnumerable <Command> OnDrop(IMetadata sourceMetadata, IMetadata targetMetadata, IComparerContext context)
    {
        var command = new Command();

        if (IsLegacy)
        {
            command.Append($"DROP EXTERNAL FUNCTION {FunctionName.AsSqlIndentifier()}");
        }
        else
        {
            command.Append($"DROP FUNCTION");
            if (PackageName != null)
            {
                command.Append($" {PackageName.AsSqlIndentifier()}.{FunctionName.AsSqlIndentifier()}");
            }
            else
            {
                command.Append($" {FunctionName.AsSqlIndentifier()}");
            }
        }
        yield return(command);
    }
Exemplo n.º 4
0
 protected override IEnumerable <Command> OnCreate(IMetadata sourceMetadata, IMetadata targetMetadata, IComparerContext context)
 {
     if (IsLegacy)
     {
         var command = new Command();
         command.Append($"DECLARE EXTERNAL FUNCTION {FunctionName.AsSqlIndentifier()}");
         var inputs =
             FunctionArguments
             .Where(x => x.ArgumentPosition != ReturnArgument)
             .OrderBy(x => x.ArgumentPosition)
             .Select(CreateLegacyArgumentDefinition);
         command.Append($" {string.Join(", ", inputs)}");
         command.AppendLine();
         var @return = FunctionArguments.First(x => x.ArgumentPosition == ReturnArgument);
         command.Append($"RETURNS{(ReturnArgument != 0 ? " PARAMETER" : string.Empty)} {CreateLegacyArgumentDefinition(@return)}");
         command.AppendLine();
         command.Append($"ENTRY_POINT '{SqlHelper.DoubleSingleQuotes(EntryPoint)}' MODULE_NAME '{SqlHelper.DoubleSingleQuotes(ModuleName)}'");
         yield return(command);
     }
     else
     {
         var command = SqlHelper.IsValidExternalEngine(this) ? new Command() : new PSqlCommand();
         command.Append("CREATE OR ALTER FUNCTION");
         if (PackageName != null)
         {
             command.Append($" {PackageName.AsSqlIndentifier()}.{FunctionName.AsSqlIndentifier()}");
         }
         else
         {
             command.Append($" {FunctionName.AsSqlIndentifier()}");
         }
         var inputs =
             FunctionArguments
             .Where(x => x.ArgumentPosition != ReturnArgument)
             .OrderBy(x => x.ArgumentPosition)
             .Select(x => CreateNewArgumentDefinition(x, sourceMetadata, targetMetadata, context));
         var @return = FunctionArguments.First(x => x.ArgumentPosition == ReturnArgument);
         var output  = CreateNewArgumentDefinition(@return, sourceMetadata, targetMetadata, context);
         command.Append($" ({string.Join(", ", inputs)}) RETURNS {output}");
         if (DeterministicFlag == DeterministicFlagType.Deterministic)
         {
             command.Append(" DETERMINISTIC");
         }
         command.AppendLine();
         if (SqlHelper.IsValidExternalEngine(this))
         {
             command.Append($"EXTERNAL NAME '{SqlHelper.DoubleSingleQuotes(EntryPoint)}'");
             command.AppendLine();
             command.Append($"ENGINE {EngineName.AsSqlIndentifier()}");
         }
         else
         {
             if (SqlSecurity != null)
             {
                 command.Append($"SQL SECURITY {SqlHelper.SqlSecurityString(SqlSecurity)}");
                 command.AppendLine();
             }
             command.Append("AS");
             command.AppendLine();
             if (context.EmptyBodiesEnabled)
             {
                 command.Append("BEGIN");
                 command.AppendLine();
                 command.Append("END");
             }
             else
             {
                 command.Append(FunctionSource);
             }
         }
         yield return(command);
     }
 }