private string FunctionBeforeQuery <T>(MetadataBuilder builder, ExecutionInformation info, OracleUdtInfo udt, out MetadataBase metadata, out OracleParameter parameter) { if (typeof(T).IsBoolean()) { metadata = _MetadataFactory.CreateBoolean(); parameter = null; return("ret := "); } else if (typeof(T).IsClrType()) { metadata = new MetadataBase(); parameter = FunctionReturnOracleParameter <T>(info, metadata); return($"{parameter.ParameterName} := "); } else { metadata = builder.GetOrRegisterMetadataOracleObject <T>(udt); parameter = null; return("ret := "); } }