Publicado el Dejar un comentario

Crear una tabla a partir de una consulta en Oracle

A veces necesitamos crear una nueva tabla con un subconjunto de datos de otra tabla para ya sea obtener reportes o analizar datos. El proceso podría ser, primero definir los campos y crear la tabla que va a contener los datos necesitados y luego insertar los datos por medio de una consulta (query) hecha a la tabla original.

Podemos ahorrarnos el paso de la definición de los campos y creación de la tabla utilizando la sentencia sql CREATE TABLE .. AS. La sentencia define los campos en base a los número y tipo de datos devueltos por la consulta.

Por ejemplo, tenemos una tabla llamada EMP que contiene información de los empleados de una empresa:

Con la siguiente estructura:

Y queremos crear una tabla que contenga sólo los campos EMPNO, ENAME y SAL y los datos de los empleados del departamento (DEPTNO) número 20. Para ello ejecutaríamos la siguiente sentencia SQL:

CREATE TABLE departamento20 AS
SELECT empno, ename, sal 
FROM emp
WHERE deptno = 20;

La sentencia anterior nos crea la tabla llamada departamento20 y con los datos de los empleados del departamento (DEPTNO) 20 como muestra la siguiente imagen:

Con la estructura que se muestra enseguida:

¡Nos vemos a la próxima!

Publicado el Dejar un comentario

ORA-30926: unable to get a stable set of rows in the source tables. Merge Oracle.

Oracle envía el error “ORA-30926: unable to get a stable set of rows in the source tables” cuando hacer una actualización a una tabla con la comando MERGE.

Este error es debido a que la sentencia está tratando de actualizar una misma fila (row) más de una vez. La solución es revisar los resultados que arroja la tabla o la consulta, que estamos utilizando para hacer la actualización, para que no arroje filas duplicadas.

¡Saludos!

Publicado el Dejar un comentario

SQL Developer 4.2 no depura procedimientos de Oracle 10g. Se ha producido un error al realizar la operación solicitada: ORA-00904.

Al actualizar la herramienta de Oracle SQL Developer a la versión 4.2 y querer depurar procedimientos PL/Sql que la versión anterior lo hacía sin problemas en mi base de datos Oracle 10g, no me permite ejecutarlos ahora, lanzando el error “Se ha producido un error al realizar la operación solicitada: ORA-00904: “OBJECT_ID”: invalid identifier. Código de proveedor 904″, como muestra la imagen siguiente:

Al parecer las tablas que usa la base de datos para llevar un control de el proceso de depuración ha cambiado y se ha agregado el campo OBJECT_ID que no existe en las versiones 10.2 y menores de Oracle. Con las versiones superiores, el procedimiento de depuración funciona sin problemas.

¿Solución? Instalar la versión 4.1 de SQL Developer para depurar dicha version de Oracle o inferior.

¡Saludos!