Inicio > Bases de Datos, Informática, Oracle > Creación de tablas desde un procedimiento almacenado en la Base de datos (Oracle)

Creación de tablas desde un procedimiento almacenado en la Base de datos (Oracle)

Dentro de los conceptos más buscados encontré que muchas personas buscan éste tipo de código, así que para todas ellas aquí les vá, y cómo siempre,   para mí, un ejemplo es mucho más sencillo de aprender, que todo un pergamino de explicaciones, así que, cualquier duda,  solo escribanme.

PROCEDURE “CREA_TABLAS” (P_CODIGO_FORMULARIO IN NUMBER)
IS
CURSOR CONCEPTOS IS
SELECT CODIGO_CONCEPTO, CODIGO_FORMULARIO, NOMBRE_DEL_CAMPO
FROM DM_CONCEPTOS_FORMULARIOS
WHERE CODIGO_FORMULARIO = P_CODIGO_FORMULARIO
ORDER BY CODIGO_CONCEPTO;
DDL VARCHAR2(32767);
BEGIN
EXECUTE IMMEDIATE  ‘DROP TABLE TEMP_’||TO_CHAR(P_CODIGO_FORMULARIO);

DDL := ‘CREATE TABLE TEMP_’||TO_CHAR(P_CODIGO_FORMULARIO)||’ (‘;
DDL := DDL || ‘ANIO NUMBER(4), ‘;
DDL := DDL || ‘MES NUMBER(2), ‘;
FOR J IN CONCEPTOS LOOP
DDL := DDL ||TO_CHAR(J.NOMBRE_DEL_CAMPO)||’ NUMBER(20,2), ‘;
END LOOP;
DDL := SUBSTR(DDL,1,LENGTH(DDL)-2) || ‘ ) TABLESPACE TBS_TABLAS ‘;

EXECUTE IMMEDIATE DDL;

EXECUTE IMMEDIATE ‘CREATE INDEX I_TEMP_’||TO_CHAR(P_CODIGO_FORMULARIO)||’_FACT ON TEMP_’||TO_CHAR(P_CODIGO_FORMULARIO)||'(ANIO, MES) TABLESPACE TBS_INDICES’;

DBMS_OUTPUT.PUT_LINE(‘PROCESO GENERADOR DE LA TEMP_’||TO_CHAR(P_CODIGO_FORMULARIO)||’ CONCLUIDO SATISFACTORIAMENTE!’);
EXCEPTION WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20912, SQLCODE || ‘,’ || SQLERRM);
END;

Obviamente, si quisieran que éste código funcionára sería necesario crear una tabla llamada “Dm_Conceptos_Formularios”, y que ésta tenga las columnas “Codigo_Concepto”, “Codigo_Formulario” y “Nombre_del_Campo”, por lo demás, sólo bastaría con crear este procedimiento a nivel de base de datos, y listo,… ya tienen un ejemplo de cómo crear tablas dinamicamente desde un procedimiento almacenado.

De igual forma pueden llenar la tabla también desde un procedimiento almacenado, así que espero les sirva.

Saludos.

Anuncios
  1. mayo 8, 2012 en 8:59 am

    hola eee recien soy nuevo en oracle quisiera hacer un procedmiento almacenado para guardar un select *from itmes le tengo asi maso menos

    1.-1. Crear un PA que despliegue el titulo de cada libro con sus
    items y copias de cada item, ingresando como parámetro el título.
    _______________________________________________________________
    select *from item;

    create or replace procedure titulolibro (atitulo out varchar2)
    is
    begin
    select cubierta into atitulo from item
    where cubierta=atitulo;
    end;
    ______________________________________________________________
    me puedes ayudar

  1. marzo 18, 2016 en 10:17 pm

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: