Paquete DBMS_CLOUD_REPO

El paquete DBMS_CLOUD_REPO permite el uso y la gestión de repositorios de código alojados en la nube desde Oracle Database. Los repositorios de código en la nube admitidos incluyen GitHub, AWS CodeCommit y Azure Repos.

Visión general de DBMS_CLOUD_REPO

El paquete DBMS_CLOUD_REPO proporciona un fácil acceso a los archivos de los repositorios de código en la nube (Git), incluidos: GitHub, AWS CodeCommit y Azure Repos.

Este paquete es una interfaz única para acceder a repositorios de código multinube y le permite cargar archivos SQL en repositorios de Git o instalar scripts SQL directamente desde repositorios de código en la nube. Este paquete también le permite utilizar un repositorio de código en la nube para gestionar versiones de código para scripts SQL e instalar o aplicar parches al código de aplicación desde repositorios de Git.

Conceptos

  • Sistema de control de versiones de Git: Git es un software para realizar un seguimiento de los cambios en cualquier conjunto de archivos, que generalmente se utiliza para coordinar el trabajo entre los programadores que desarrollan código fuente en colaboración durante el desarrollo de software. Sus objetivos incluyen la velocidad, la integridad de los datos y el soporte para flujos de trabajo distribuidos y no lineales.

  • Git Repository: Un repositorio Git es un almacenamiento virtual de su proyecto. Le permite guardar versiones de su código, a las que puede acceder cuando sea necesario.

Arquitectura

El paquete DBMS_CLOUD_REPO proporciona cuatro áreas de funciones:
  • Inicialización de repositorio con manejador de repositorio de código de nube genérico

    • Inicializar un repositorio de código GitHub

    • Inicialización de un repositorio de código CodeCommit de AWS

    • Inicialización de un repositorio de código de repositorio de Azure

  • Operaciones de Gestión de Repositorios

    • Crear un repositorio

    • Actualice un repositorio

    • Enumerar repositorios

    • Suprima un repositorio

  • Operaciones de gestión de archivos de repositorio

    • Cargue un archivo en el repositorio de código desde Oracle Database.

    • Descargue un archivo del repositorio de código en Oracle Database.

    • Suprima archivos del repositorio de código.

    • Mostrar archivos del repositorio de código.

  • Operaciones de instalación de SQL

    • Exportar DDL de metadatos de objetos de base de datos al repositorio.
    • Instale sentencias SQL desde un archivo en Code Repository en Oracle Database.

    • Instalar sentencias SQL desde un buffer.

DBMS_CLOUD_REPO Estructuras de datos

El paquete DBMS_CLOUD_REPO define tipos de registro y un tipo de objeto JSON genérico repo.

Objeto JSON de REPO

Un DBMS_CLOUD_REPO REPO es un objeto JSON opaco que representa un repositorio de código en la nube de un proveedor de nube específico. Un objeto REPO se puede transferir a diferentes API DBMS_CLOUD_REPO. Este objeto opaco garantiza que los procedimientos y las funciones de DBMS_CLOUD_REPO sean compatibles con varias nubes; no tiene que cambiar ningún código al migrar de un proveedor de repositorio de código en la nube a otro repositorio de código en la nube.

DBMS_CLOUD_REPO Grupos de subprogramas

Los subprogramas de paquetes DBMS_CLOUD_REPO se pueden agrupar en cuatro categorías: Operaciones de Inicialización, Operaciones de Gestión de Repositorio, Operaciones de Archivo y Operaciones de Instalación SQL.

DBMS_CLOUD_REPO Operaciones de Inicialización

Muestra los subprogramas para las operaciones de inicialización en el paquete DBMS_CLOUD_REPO.

Subprograma Descripción

Función INIT_AWS_REPO

Esta función inicializa un identificador de repositorio de AWS y devuelve un tipo opaco.

Función INIT_AZURE_REPO

Esta función inicializa un identificador de repositorio de Azure y devuelve un tipo opaco.

Función INIT_GITHUB_REPO

Esta función inicializa un identificador de repositorio GitHub y devuelve un tipo opaco.

Función INIT_REPO

Esta función inicializa un identificador de repositorio de código en la nube y devuelve un objeto JSON opaco.

DBMS_CLOUD_REPO Operaciones de Gestión de Repositorios

Muestra los subprogramas para las operaciones de gestión del repositorio en el paquete DBMS_CLOUD_REPO.

Subprograma Descripción

CREATE_REPOSITORY Procedimiento

Este procedimiento crea un repositorio de código en la nube identificado por el argumento de manejador repo.

DELETE_REPOSITORY Procedimiento

Este procedimiento suprime el repositorio de código en la nube identificado por el argumento de manejador repo.

Función LIST_REPOSITORIES

Esta función muestra todos los repositorios de código en la nube identificados por el argumento de manejador repo.

UPDATE_REPOSITORY Procedimiento

Este procedimiento actualiza un repositorio de código en la nube identificado por el argumento de identificador repo. El procedimiento admite la actualización del nombre, la descripción o el estado de visibilidad privada, tal como lo admite el repositorio de Cloud Code.

DBMS_CLOUD_REPO Operaciones de gestión de sucursales de repositorio

Muestra los subprogramas para las operaciones de gestión de ramas del repositorio en el paquete DBMS_CLOUD_REPO.

Subprograma Descripción

CREATE_BRANCH Procedimiento

Este procedimiento crea una rama en un repositorio de código en la nube identificado por el argumento de manejador repo.

DELETE_BRANCH Procedimiento

Este procedimiento suprime una rama en un repositorio de código en la nube identificado por el argumento de manejador repo.

Función LIST_BRANCHES

Esta función muestra todas las ramas del repositorio de código en la nube identificadas por el argumento de manejador repo.

Función LIST_COMMITS

Esta función muestra todas las confirmaciones de una rama del repositorio de código en la nube identificada por el argumento de manejador repo.

MERGE_BRANCH Procedimiento

Este procedimiento fusiona una rama del repositorio de código en la nube en otra rama especificada en un repositorio de código en la nube identificado por el argumento de manejador repo.

Operaciones de archivo DBMS_CLOUD_REPO

Muestra los subprogramas para las operaciones de archivo en el paquete DBMS_CLOUD_REPO.

Subprograma Descripción

Procedimiento DELETE_FILE

Este procedimiento suprime un archivo del repositorio de código de nube identificado por el argumento de manejador repo.

GET_FILE Procedimiento y función

La función descarga el contenido de un archivo del repositorio de Cloud Code. El procedimiento permite descargar el contenido de un archivo del repositorio de Cloud Code y guardar el archivo en un directorio.

Función LIST_FILES

Esta función descarga un archivo del repositorio de Cloud Code. Opcionalmente, se puede acceder al contenido del archivo desde una rama, etiqueta o nombre de confirmación específicos. Por defecto, se accede al archivo desde la rama de repositorio por defecto.

PUT_FILE Procedimiento

Este procedimiento carga un archivo en el repositorio de código de nube identificado por el argumento de manejador repo. El procedimiento se sobrecarga para admitir la carga de un archivo desde un objeto de directorio o la carga del contenido de un CLOB en el archivo de repositorio.

DBMS_CLOUD_REPO Operaciones de Instalación de SQL

Muestra los subprogramas de las operaciones de instalación SQL en el paquete DBMS_CLOUD_REPO.

Subprograma Descripción

EXPORT_OBJECT Procedimiento

Este procedimiento carga los metadatos DDL de un objeto de base de datos en el repositorio de código en la nube identificado por el argumento de manejador repo.

EXPORT_SCHEMA Procedimiento

Este procedimiento exporta metadatos de todos los objetos de un esquema a una rama del repositorio de código en la nube identificada por el argumento de manejador repo.

INSTALL_FILE Procedimiento

Este procedimiento instala sentencias SQL de un archivo en el repositorio de código en la nube identificado por el argumento de manejador repo.

INSTALL_SQL Procedimiento

Este procedimiento instala sentencias SQL de un buffer proporcionado como entrada.

Resumen de Subprogramas DBMS_CLOUD_REPO

En esta sección se tratan los subprogramas DBMS_CLOUD_REPO proporcionados con Autonomous Database.

CREATE_BRANCH Procedimiento

Este procedimiento crea una rama en el repositorio de código en la nube identificada por el argumento de manejador repo.

Sintaxis

PROCEDURE DBMS_CLOUD_REPO.CREATE_BRANCH(
    repo               IN   CLOB,
    branch_name        IN   VARCHAR2,
    parent_branch_name IN   VARCHAR2 DEFAULT NULL,
    parent_commit_id   IN   VARCHAR2 DEFAULT NULL
 );

Parámetros

Parámetro Descripción
repo

Especifica el identificador del repositorio.

Este parámetro es obligatorio y está soportado para todos los proveedores de nube.

branch_name

Especifica el nombre de la rama del repositorio.

Este parámetro es obligatorio y está soportado para todos los proveedores de nube.

parent_branch_name

Crea la nueva rama mediante la confirmación principal de la rama principal especificada.

Este parámetro está soportado para todos los proveedores de nube.

Si no proporciona un valor parent_branch_name, parent_branch_name se define en main.

parent_commit_id

Crea la nueva rama mediante la confirmación del repositorio especificada.

Este parámetro está soportado para todos los proveedores de nube.

Si no proporciona un valor parent_commit_id, parent_commit_id se define en un valor NULL.

Ejemplo

Nota

Para crear una rama en un repositorio de código de nube, debe especificar la rama principal o el ID de confirmación principal.
BEGIN
  DBMS_CLOUD_REPO.CREATE_BRANCH (
    repo                 => l_repo,
    branch_name          => 'test_branch',
    parent_branch_name   => 'main'
    );
END;
/

Nota de uso

Para ejecutar el procedimiento DBMS_CLOUD_REPO.CREATE_BRANCH, debe estar conectado como usuario ADMIN o tener el privilegio EXECUTE en DBMS_CLOUD_REPO.

CREATE_REPOSITORY Procedimiento

Este procedimiento crea un repositorio de código en la nube identificado por el argumento de manejador repo.

Sintaxis

PROCEDURE DBMS_CLOUD_REPO.CREATE_REPOSITORY(
      repo                 IN   CLOB,
      description          IN   CLOB     DEFAULT NULL,
      private              IN   BOOLEAN  DEFAULT TRUE
);

Parámetros

Parámetro Descripción
repo Especifica el identificador del repositorio.

Este parámetro está soportado para todos los proveedores de nube.

description Descripción de texto breve para el repositorio.

Este parámetro es compatible con GITHUB y el proveedor de nube de AWS.

private

El repositorio es privado y solo se puede acceder a él con credenciales válidas

Este parámetro solo se admite para el proveedor de nube de GITHUB.

Ejemplo

BEGIN
  DBMS_CLOUD_REPO.CREATE_REPOSITORY(
    repo        => l_repo,
    description => 'My test repo',
    private => TRUE
    );
END;
/

DELETE_BRANCH Procedimiento

Este procedimiento suprime una rama en el repositorio de código de nube identificada por el argumento de manejador repo.

Sintaxis

PROCEDURE DBMS_CLOUD_REPO.DELETE_BRANCH (
      repo              IN  CLOB, 
      branch_name       IN  VARCHAR2  DEFAULT NULL
 );

Parámetros

Parámetro Descripción
repo Especifica el identificador del repositorio.

Este parámetro es obligatorio y está soportado para todos los proveedores de nube.

branch_name Suprimir rama de un repositorio específico.

Este parámetro es obligatorio y está soportado para todos los proveedores de nube.

Ejemplo

BEGIN
  DBMS_CLOUD_REPO.DELETE_BRANCH (
      repo        => l_repo,
      branch_name => 'test_branch'
  );
END;
/

Nota de uso

Para ejecutar el procedimiento DBMS_CLOUD_REPO.DELETE_BRANCH, debe estar conectado como usuario ADMIN o tener el privilegio EXECUTE en DBMS_CLOUD_REPO.

Procedimiento DELETE_FILE

Este procedimiento suprime un archivo del repositorio de código de nube identificado por el argumento de manejador repo.

Sintaxis

PROCEDURE DBMS_CLOUD_REPO.DELETE_FILE(
      repo              IN  CLOB,
      file_path         IN  VARCHAR2,
      branch_name       IN  VARCHAR2  DEFAULT NULL,
      commit_details    IN  CLOB      DEFAULT NULL
);

Parámetros

Parámetro Descripción
repo Especifica el identificador del repositorio.
file_path Ruta de archivo para suprimir el archivo en el repositorio.
branch_name Suprimir archivo de una rama específica.
commit_details

Detalles de confirmación como documento JSON

{"message": "Commit message", "author": {"name": "Committing user name", "email": "Email of committing user" } }

Ejemplo

BEGIN
  DBMS_CLOUD_REPO.DELETE_FILE(
      repo        => l_repo,
      file_path   => 'scripts/test3.sql',
      branch_name => 'test_branch'
  );
END;
/

DELETE_REPOSITORY Procedimiento

Este procedimiento suprime el repositorio de código en la nube identificado por el argumento de manejador repo.

Sintaxis

PROCEDURE DBMS_CLOUD_REPO.DELETE_REPOSITORY(
      repo           IN   CLOB
);

Parámetros

Parámetro Descripción
repo Especifica el identificador del repositorio.

Ejemplo

BEGIN
  DBMS_CLOUD_REPO.DELETE_REPOSITORY(
       repo => l_repo
  );
END;
/

EXPORT_OBJECT Procedimiento

Este procedimiento carga los metadatos DDL de un objeto de base de datos en el repositorio de código en la nube identificado por el argumento de manejador repo. Este procedimiento es una forma sencilla de cargar la definición de metadatos de un objeto de base de datos en un solo paso.

Sintaxis

PROCEDURE DBMS_CLOUD_REPO.EXPORT_OBJECT(
      repo              IN  CLOB,
      file_path         IN  VARCHAR2,
      object_type       IN  VARCHAR2,
      object_name       IN  VARCHAR2 DEFAULT NULL,
      object_schema     IN  VARCHAR2 DEFAULT NULL,
      branch_name       IN  VARCHAR2 DEFAULT NULL,
      commit_details    IN  CLOB     DEFAULT NULL,
      append            IN  BOOLEAN  DEFAULT FALSE
);

Parámetros

Parámetro Descripción
repo Especifica el identificador del repositorio.
file_path Ruta de archivo para cargar metadatos de objeto en el repositorio.
object_type

Tipo de objeto soportado por DBMS_METADATA. Consulte DBMS_METADATA: tabla Tipos de objeto para obtener más información.

object_name Nombre del objeto de base de datos para recuperar los metadatos.
object_schema Esquema propietario del objeto de base de datos.
branch_name Coloque el archivo en una rama específica.
commit_details

Detalles de confirmación como documento JSON:{"message": "Commit message", "author": {"name": "Committing user name", "email": "Email of committing user" } }

append Agregue el DDL de metadatos al archivo existente.

Nota de uso

Para un control personalizado del objeto DDL, puede utilizar DBMS_METADATA.GET_DDL junto con DBMS_CLOUD_REPO.PUT_FILE. Para obtener la definición de metadatos del objeto, el usuario actual debe tener privilegios para recuperar los metadatos del objeto. Consulte DBMS_METADATA para conocer los requisitos de seguridad del paquete.

Ejemplo

BEGIN
  DBMS_CLOUD_REPO.EXPORT_OBJECT(
     repo        => l_repo,
     object_type => 'PACKAGE',
     object_name => 'MYPACK',
     file_path   => 'mypack.sql'
  );
END;
/

EXPORT_SCHEMA Procedimiento

Este procedimiento exporta metadatos de todos los objetos de un esquema a la rama del repositorio de código en la nube identificada por el argumento de manejador repo.

Sintaxis

PROCEDURE DBMS_CLOUD_REPO.EXPORT_SCHEMA(
     repo            IN CLOB,
     file_path       IN VARCHAR2,
     schema_name     IN VARCHAR2,
     filter_list     IN CLOB         DEFAULT NULL,
     branch_name     IN VARCHAR2     DEFAULT NULL,
     commit_details  IN CLOB         DEFAULT NULL
);

Parámetros

Parámetro Descripción
repo

Especifica el identificador del repositorio.

Este parámetro es obligatorio y está soportado para todos los proveedores de nube.

file_path

Especifica el nombre del archivo de esquema que se va a cargar en el repositorio.

Este parámetro es obligatorio y está soportado para todos los proveedores de nube.

schema_name

Especifica el nombre del esquema para el que se va a cargar un script DDL en la rama del repositorio de código en la nube.

Este parámetro es obligatorio y está soportado para todos los proveedores de nube.

filter_list

Especifica el CLOB de la matriz de JSON que define las condiciones de filtro para incluir o excluir los objetos cuyos metadatos se deben exportar.

Este parámetro está soportado para todos los proveedores de nube.

Los parámetros de JSON para filter_list son:
  • match_type: especifica el tipo de filtro que se va a aplicar a los tipos de objeto o nombres de objeto.

    Los valores válidos de match_type son:
    • in/not_in

    • like/not_like

    • equal/not_equal

  • type: especifica el tipo de objeto por el que filtrar.

  • name: especifica el nombre del objeto por el que filtrar.

branch_name

Especifica el nombre de la rama del repositorio.

Este parámetro está soportado para todos los proveedores de nube.

Si no proporciona un valor branch_name, branch_name se define en la rama de repositorio por defecto.

commit_details

Detalles de confirmación como documento JSON

{"message": "Commit message", "author": {"name": "Committing user name", "email": "Email of committing user" } }

Este parámetro está soportado para todos los proveedores de nube.

Si no proporciona un valor commit_details, commit_details se define en el mensaje de confirmación por defecto que incluye la información sobre el usuario de la sesión de base de datos actual y el nombre de la base de datos que realiza la confirmación.

Ejemplo

BEGIN
  DBMS_CLOUD_REPO.EXPORT_SCHEMA(
    repo          => l_repo,
    schema_name   => 'USER1',
    file_path     => 'myschema_ddl.sql'
    filter_list   =>
        to_clob('[    
             { "match_type":"equal",
                 "type":"table"
             },
             { "match_type":"not_equal",
                 "type":"view"
             },
             { "match_type":"in",
                 "type":"table",
                 "name": " ''EMPLOYEE_SALARY'',''EMPLOYEE_ADDRESS'' "
             },
             { "match_type":"equal",
                 "type":"sequence",
                 "name": "EMPLOYEE_RECORD_SEQ"
             },
             { "match_type":"like",
                 "type":"table",
                 "name": "%OFFICE%"
             }    
        ]'
     );
  );
END;
/

Nota de uso

Para ejecutar el procedimiento DBMS_CLOUD_REPO.EXPORT_SCHEMA, debe estar conectado como usuario ADMIN o tener el privilegio EXECUTE en DBMS_CLOUD_REPO.

GET_FILE Procedimiento y función

La función descarga el contenido de un archivo del repositorio de Cloud Code. El procedimiento permite descargar el contenido de un archivo del repositorio de Cloud Code y guardar el archivo en un directorio.

Sintaxis

FUNCTION DBMS_CLOUD_REPO.GET_FILE(
      repo              IN  CLOB,
      file_path         IN  VARCHAR2,
      branch_name       IN  VARCHAR2  DEFAULT NULL,
      tag_name          IN  VARCHAR2  DEFAULT NULL,
      commit_name       IN  VARCHAR2  DEFAULT NULL
) RETURN CLOB;
 
PROCEDURE DBMS_CLOUD_REPO.GET_FILE(
      repo              IN  CLOB,
      file_path         IN  VARCHAR2,
      directory_name    IN  VARCHAR2,
      target_file_name  IN  VARCHAR2  DEFAULT NULL,
      branch_name       IN  VARCHAR2  DEFAULT NULL,
      tag_name          IN  VARCHAR2  DEFAULT NULL,
      commit_name       IN  VARCHAR2  DEFAULT NULL
);

Parámetros

Parámetro Descripción
repo Especifica el identificador del repositorio.
file_path Ruta de archivo en el repositorio.
directory_name Nombre de objeto de directorio para guardar el contenido del archivo.
target_file_name Nombre del archivo de destino para guardar el contenido en el directorio.
branch_name Obtener archivo de una rama específica.
tag_name Obtener archivo de una etiqueta específica.
commit_name Obtener archivo de una confirmación específica.

Ejemplo

BEGIN
  DBMS_CLOUD_REPO.GET_FILE(
     repo             =>  l_repo,
     file_path        => 'test3.sql',
     directory_name   => 'DATA_PUMP_DIR',
     target_file_name => 'test2.sql'
  );
END;
/

Función INIT_AWS_REPO

Esta función inicializa un identificador de repositorio de AWS y devuelve un tipo opaco.

Sintaxis

FUNCTION DBMS_CLOUD_REPO.INIT_AWS_REPO(
      credential_name IN  VARCHAR2,
      repo_name       IN  VARCHAR2,
      region          IN  VARCHAR2
)  RETURN repo;

Parámetros

Parámetro Descripción
credential_name

Objeto de credencial que especifica la clave de acceso/clave secreta CodeCommit de AWS.

repo_name Especifica el nombre del repositorio.
region Especifica la región de AWS para el repositorio CodeCommit.

Ejemplo

BEGIN
  :repo := DBMS_CLOUD_REPO.INIT_AWS_REPO(
                 credential_name => 'AWS_CRED',
                 repo_name       => 'my_repo',
                 region          => 'us-east-1'
           );
END;
/  

Función INIT_AZURE_REPO

Esta función inicializa un identificador de repositorio de Azure y devuelve un tipo opaco. Esta función solo es compatible con el proveedor de nube de Azure.

Sintaxis

FUNCTION DBMS_CLOUD_REPO.INIT_AZURE_REPO(
      credential_name IN  VARCHAR2,
      repo_name       IN  VARCHAR2,
      organization    IN  VARCHAR2,
      project         IN  VARCHAR2
)  RETURN repo;

Parámetros

Parámetro Descripción
credential_name

Objeto de credencial que especifica Azure, con un nombre de usuario y un token de acceso personal (PAT).

repo_name Especifica el nombre del repositorio.
organization Especifica la organización DevOps de Azure.
project Nombre de proyecto de equipo de Azure.

Ejemplo

BEGIN
  :repo := DBMS_CLOUD_REPO.INIT_AZURE_REPO(
                 credential_name => 'AZURE_CRED',
                 repo_name       => 'my_repo',
                 organization    => 'myorg',
                 project         => 'myproj',
           );
END;
/

Función INIT_GITHUB_REPO

Esta función inicializa un identificador de repositorio GitHub y devuelve un tipo opaco.

Sintaxis

FUNCTION DBMS_CLOUD_REPO.INIT_GITHUB_REPO(
      credential_name IN  VARCHAR2  DEFAULT NULL,
      repo_name       IN  VARCHAR2,
      owner           IN  VARCHAR2) 
RETURN repo;

Parámetros

Parámetro Descripción
credential_name

Objeto de credencial que especifica GitHub.

Correo electrónico de usuario y token de acceso personal (PAT).

repo_name Especifica el nombre del repositorio.
owner Especifica el propietario del repositorio.

Ejemplo

BEGIN
  :repo := DBMS_CLOUD_REPO.INIT_GITHUB_REPO(
                 credential_name => 'GITHUB_CRED',
                 repo_name       => 'my_repo',
                 owner           => 'foo'
           );
END;
/  

Función INIT_REPO

Esta función inicializa un identificador de repositorio de código en la nube y devuelve un objeto JSON opaco. Esta función es una interfaz genérica para aceptar un documento JSON y evita tener que cambiar el código, solo necesita cambiar un documento JSON al mover un repositorio de código de un repositorio de Cloud Code a otro repositorio de Cloud Code.

Sintaxis

FUNCTION DBMS_CLOUD_REPO.INIT_REPO(
     params      IN   CLOB)
RETURN CLOB;

Parámetros

Parámetro JSON Descripción
provider

Proveedor de repositorio de código en la nube de lo siguiente:

DBMS_CLOUD_REPO.GITHUB_REPO ('GITHUB')

DBMS_CLOUD_REPO.AWS_REPO ('AWS')

DBMS_CLOUD_REPO.AZURE_REPO ('AZURE')
repo_name Especifica el nombre del repositorio. DBMS_CLOUD_REPO.PARAM_REPO_NAME
owner GitHub Propietario del repositorio. DBMS_CLOUD_REPO.PARAM_OWNER

Este parámetro solo se aplica al proveedor en la nube GitHub.

region Región de repositorio de AWS DBMS_CLOUD_REPO_PARAM_REGION

Este parámetro solo es aplicable para el proveedor de nube de AWS.

organization Organización de Azure DBMS_CLOUD_REPO_PARAM_ORGANIZATION

Este parámetro solo es aplicable para el proveedor de nube de Azure.

project Proyecto de equipo de Azure DBMS_CLOUD_REPO_PARAM_PROJECT

Este parámetro solo es aplicable para el proveedor de nube de Azure

Ejemplo

BEGIN
  :repo := DBMS_CLOUD_REPO.INIT_REPO(
          params => JSON_OBJECT('credential_name' value 'mycred',
                        'repo_name'       value 'myrepo',
                        'repo_owner'      value 'foo')
       );
END;
/

INSTALL_FILE Procedimiento

Este procedimiento instala sentencias SQL de un archivo en el repositorio de código en la nube identificado por el argumento de manejador repo.

Sintaxis

PROCEDURE DBMS_CLOUD_REPO.INSTALL_FILE(
      repo              IN  CLOB,
      file_path         IN  VARCHAR2,
      branch_name       IN  VARCHAR2  DEFAULT NULL,
      tag_name          IN  VARCHAR2  DEFAULT NULL,
      commit_name       IN  VARCHAR2  DEFAULT NULL,
      stop_on_error     IN  BOOLEAN   DEFAULT TRUE
);

Parámetros

Parámetro Descripción
repo Especifica el identificador del repositorio.
file_path Ruta de archivo en el repositorio.
branch_name Rama para instalar el archivo desde una rama específica.
tag_name Etiqueta para instalar el archivo desde una etiqueta específica.
commit_name ID de confirmación para instalar el archivo desde una confirmación específica.
stop_on_error Pare la ejecución de las sentencias SQL en el primer error.

Notas de uso

  • Puede instalar sentencias SQL que contengan SQL anidado desde un archivo de repositorio de código en la nube mediante lo siguiente:

    • @: incluye un archivo SQL con una ruta de acceso relativa a la ROOT del repositorio.

    • @@: incluye un archivo SQL con una ruta de acceso relativa al archivo actual.

  • Los scripts están diseñados como scripts de instalación de esquema y no como scripts SQL genéricos:

    • Los scripts no pueden contener comandos específicos del cliente SQL*Plus.
    • Los scripts no pueden contener variables de enlace ni scripts con parámetros.
    • Las sentencias SQL se deben terminar con una barra diagonal en una nueva línea (/).
    • Los scripts pueden contener sentencias DDL, DML PLSQL, pero las sentencias SELECT directas no están soportadas. Está soportado el uso de SELECT en un bloque PL/SQL.

    Cualquier sentencia SQL que se pueda ejecutar mediante EXECUTE IMMEDIATE funcionará si no contiene variables de enlace o no las define.

Ejemplo

BEGIN
     DBMS_CLOUD_REPO.INSTALL_FILE(
         repo          => l_repo,
         file_path     => 'test3.sql',
         stop_on_error => FALSE
     );
END;
/

INSTALL_SQL Procedimiento

Este procedimiento instala sentencias SQL de un buffer proporcionado como entrada.

Sintaxis

PROCEDURE DBMS_CLOUD_REPO.INSTALL_SQL(
      content           IN  CLOB,
      stop_on_error     IN  BOOLEAN  DEFAULT TRUE
);

Parámetros

Parámetro Descripciones
content CLOB que contiene las sentencias SQL que se van a ejecutar.
stop_on_error Pare la ejecución de las sentencias SQL en el primer error.

Notas de uso

  • Los scripts están diseñados como scripts de instalación de esquema y no como scripts SQL genéricos:

    • Los scripts no pueden contener comandos específicos del cliente SQL*Plus.
    • Los scripts no pueden contener variables de enlace ni scripts con parámetros.
    • Las sentencias SQL se deben terminar con una barra diagonal en una nueva línea (/).
    • Los scripts pueden contener sentencias DDL, DML PLSQL, pero las sentencias SELECT directas no están soportadas. Está soportado el uso de SELECT en un bloque PL/SQL.

    Cualquier sentencia SQL que se pueda ejecutar mediante EXECUTE IMMEDIATE funcionará si no contiene variables de enlace o no las define.

Ejemplo

BEGIN
  DBMS_CLOUD_REPO.INSTALL_SQL(
      content   => 'create table t1 (x varchar2(30))' || CHR(10) || '/',
      stop_on_error => FALSE
  );
END;
/

Función LIST_BRANCHES

Esta función muestra las bifurcaciones de la rama del repositorio de código en la nube identificadas por el argumento de manejador repo.

Sintaxis

FUNCTION DBMS_CLOUD_REPO.LIST_BRANCHES(
    repo           IN   CLOB
) RETURN list_branch_ret_tab PIPELINED PARALLEL_ENABLE;

Parámetros

Parámetro Descripción
repo Especifica el identificador del repositorio.

Este parámetro es obligatorio y está soportado para todos los proveedores de nube.

Ejemplo

SELECT * FROM DBMS_CLOUD_REPO.LIST_BRANCHES (repo => l_repo);

Notas de uso

  • Se trata de una función de tabla con líneas discontinuas con el tipo de retorno list_branch_ret_tab.

  • DBMS_CLOUD_REPO.LIST_BRANCHES devuelve la columna: name, que indica el nombre de la rama del repositorio de código en la nube.

Función LIST_COMMITS

Esta función muestra las confirmaciones en la rama del repositorio de código en la nube identificada por el argumento de manejador repo.

Sintaxis

FUNCTION DBMS_CLOUD_REPO.LIST_COMMITS(
      repo              IN  CLOB,
      branch_name       IN  VARCHAR2  DEFAULT NULL,
      file_path         IN  VARCHAR2 DEFAULT NULL,
      commit_id         IN  VARCHAR2  DEFAULT NULL
) RETURN list_commit_ret_tab PIPELINED PARALLEL_ENABLE;

Parámetros

Parámetro Descripción
repo Especifica el identificador del repositorio.

Este parámetro es obligatorio y está soportado para todos los proveedores de nube.

branch_name Mostrar confirmaciones de una rama específica.

Este parámetro está soportado para todos los proveedores de nube.

Si no proporciona un valor branch_name, branch_name se define en main.

file_path Muestre los archivos en la ruta de acceso de la subcarpeta especificada en el repositorio.

Este parámetro solo se admite para proveedores de nube de Git y Azure.

Si no proporciona un valor file_path, file_path se define en un valor NULL.

commit_id Mostrar los archivos a partir de la sha/id especificada

Este parámetro está soportado para todos los proveedores de nube.

Si no proporciona un valor commit_id, commit_id se define en un valor NULL.

Ejemplo

SELECT name FROM DBMS_CLOUD_REPO.LIST_COMMITS(repo => l_repo);

Ejemplo

SELECT name FROM DBMS_CLOUD_REPO.LIST_COMMITS (
    repo        => l_repo,
    commit_id   => '66dd2b23b74cd0afabd11af66c6aa9c550540ba6',
    file_path   => 'sub_dir/test11.sql'
);

Notas de uso

  • Se trata de una función de tabla con líneas discontinuas con un tipo de retorno como list_commit_ret_tab.

  • DBMS_CLOUD_REPO.LIST_COMMITS devuelve la columna: commit_id.

Función LIST_FILES

Esta función descarga un archivo del repositorio de Cloud Code. Opcionalmente, se puede acceder al contenido del archivo desde una rama, etiqueta o nombre de confirmación específicos. Por defecto, se accede al archivo desde la rama de repositorio por defecto. Los resultados incluyen los nombres de archivo y metadatos adicionales sobre los archivos.

Sintaxis

FUNCTION DBMS_CLOUD_REPO.LIST_FILES(
      repo              IN  CLOB,
      path              IN  VARCHAR2  DEFAULT NULL,
      branch_name       IN  VARCHAR2  DEFAULT NULL,
      tag_name          IN  VARCHAR2  DEFAULT NULL,
      commit_id         IN  VARCHAR2  DEFAULT NULL
) RETURN list_file_ret_tab PIPELINED PARALLEL_ENABLE;

Parámetros

Parámetro Descripción
repo Especifica el identificador del repositorio.
path Muestre los archivos en la ruta de acceso de la subcarpeta especificada en el repositorio.
branch_name Mostrar archivos de una rama específica.
tag_name Mostrar archivos de una etiqueta específica.
commit_name Mostrar archivos de una confirmación específica.

Notas de uso

  • Se trata de una función de tabla con líneas discontinuas con el tipo de retorno list_file_ret_tab.

  • DBMS_CLOUD_REPO.LIST_FILES devuelve las columnas: id, name, url y bytes.

Ejemplo

SELECT name FROM DBMS_CLOUD_REPO.LIST_FILES(repo => l_repo);

NAME
-------------------------
test3.sql

Función LIST_REPOSITORIES

Esta función muestra todos los repositorios de código en la nube identificados por el argumento de manejador repo. Si el identificador repo tiene un nombre de repositorio especificado, la función no restringe la lista al nombre de repositorio especificado; muestra todos los repositorios a los que puede acceder el usuario.

Sintaxis

FUNCTION DBMS_CLOUD_REPO.LIST_REPOSITORIES(
      repo                 IN   CLOB
) RETURN list_repo_ret_tab PIPELINED PARALLEL_ENABLE;

Parámetros

Parámetro Descripción
repo

Especifica el identificador del repositorio. Todos los proveedores de nube admiten este parámetro.

Notas de uso

  • Se trata de una función de tabla con líneas discontinuas con el tipo de retorno list_repo_ret_tab.

  • DBMS_CLOUD_REPO.LIST_REPOSITORIES devuelve las columnas: id, name, owner, description, private, url, bytes, created y last_modified.

Ejemplo

SELECT name description FROM DBMS_CLOUD_REPO.LIST_REPOSITORIES(:repo);

NAME                  DESCRIPTION
--------------------- ---------------
TestRepo1             My test repo

MERGE_BRANCH Procedimiento

Este procedimiento fusiona una rama de repositorio en otra rama especificada en el repositorio de código en la nube identificado por el argumento de manejador repo. El procedimiento MERGE_BRANCH no está soportado actualmente en Azure.

Sintaxis

PROCEDURE DBMS_CLOUD_REPO.MERGE_BRANCH (
    repo               IN   CLOB,
    branch_name        IN   VARCHAR2,
    parent_branch_name IN   VARCHAR2 DEFAULT NULL,
    commit_details     IN   CLOB      DEFAULT NULL
 );

Parámetros

Parámetro Descripción
repo

Especifica el identificador del repositorio.

Este parámetro es obligatorio y se admite para los proveedores de nube de GITHUB y AWS.

branch_name

Especifica el nombre de rama de Git que se va a fusionar.

Este parámetro es obligatorio y está soportado para todos los proveedores de nube.

target_branch_name

Especifica el nombre de la rama de destino en la que se fusionará.

Este parámetro es obligatorio y está soportado para todos los proveedores de nube.

commit_details

Detalles de confirmación como documento JSON

{"message": "Commit message", "author": {"name": "Committing user name", "email": "Email of committing user" } }

Si no proporciona un valor commit_details, commit_details se define en el mensaje de confirmación por defecto que incluye la información sobre el usuario de la sesión de base de datos actual y el nombre de la base de datos que realiza la confirmación.

Ejemplo

BEGIN
  DBMS_CLOUD_REPO.MERGE_BRANCH (
    repo               => l_repo,
    branch_name        => 'test_branch',
    target_branch_name => 'main'
    );
END;
/

Nota de uso

Para ejecutar el procedimiento DBMS_CLOUD_REPO.MERGE_BRANCH, debe estar conectado como usuario ADMIN o tener el privilegio EXECUTE en DBMS_CLOUD_REPO.

PUT_FILE Procedimiento

Este procedimiento carga un archivo en el repositorio de código de nube identificado por el argumento de manejador repo. El procedimiento se sobrecarga para admitir la carga de un archivo desde un objeto de directorio o la carga del contenido de un BLOB en el archivo de repositorio.

Sintaxis

PROCEDURE DBMS_CLOUD_REPO.PUT_FILE(
      repo              IN  CLOB,
      file_path         IN  VARCHAR2,
      contents          IN  BLOB,
      branch_name       IN  VARCHAR2  DEFAULT NULL,
      commit_details    IN  CLOB      DEFAULT NULL
);
 
PROCEDURE DBMS_CLOUD_REPO.PUT_FILE(
      repo              IN  CLOB,
      file_path         IN  VARCHAR2,
      directory_name    IN  VARCHAR2,
      source_file_name  IN  VARCHAR2  DEFAULT NULL,
      branch_name       IN  VARCHAR2  DEFAULT NULL,
      commit_details    IN  CLOB      DEFAULT NULL
);

Parámetros

Parámetro Descripción
repo Especifica el identificador del repositorio.
file_path Ruta de archivo para cargar el archivo en el repositorio.
contents BLOB que contiene el contenido del archivo.
directory_name Nombre de objeto de directorio que contiene el nombre de archivo.
source_file_name Nombre de archivo de origen para cargar en el repositorio.
branch_name Coloque el archivo en una rama específica.
commit_details

Detalles de confirmación como documento JSON:

{"message": "Commit message", "author": {"name": "Committing user name", "email": "Email of committing user" } }

Ejemplo

BEGIN
  DBMS_CLOUD_REPO.PUT_FILE(
     repo   => l_repo,
  );
END;
/

UPDATE_REPOSITORY Procedimiento

Este procedimiento actualiza un repositorio de código en la nube identificado por el argumento de identificador repo. UPDATE_REPOSITORY soporta la actualización del nombre, la descripción o el estado de visibilidad privada, tal y como soporta el repositorio de código de nube.

Sintaxis

PROCEDURE DBMS_CLOUD_REPO.UPDATE_REPOSITORY(
      repo                 IN OUT  CLOB,
      new_name             IN      VARCHAR2 DEFAULT NULL,
      description          IN      CLOB     DEFAULT NULL,
      private              IN      BOOLEAN  DEFAULT NULL
);

Parámetros

Parámetro Descripción
repo Especifica el identificador del repositorio.

Este parámetro está soportado para todos los proveedores de nube.

new_name Nuevo nombre para el repositorio.

Este parámetro está soportado para todos los proveedores de nube.

description Descripción de texto breve para el repositorio.

Este parámetro es compatible con los proveedores de nube de GITHUB y AWS.

private

El repositorio es privado y solo se puede acceder a él con credenciales válidas.

Este parámetro está soportado para el proveedor de nube de GITHUB.

Ejemplo

BEGIN
  DBMS_CLOUD_REPO.UPDATE_REPOSITORY(
     repo        => l_repo,
     new_name    => 'repo2'
  );
END;
/