lunes, 27 de junio de 2011

Consultar qué tablas pertenecen a un usuario en Oracle

Vista de SQL Developer en el que muestra las tablas de HR
«Vista de SQL Developer en el que muestra las tablas de HR»

Podríamos decirlo de otro modo: ¿Cómo conocer qué tablas tiene un esquema? Recordar que usuario y esquema en Oracle van asociados. Usuario es el propietario y esquema es la agrupación lógica de los objetos pertenecientes a un usuario. Tienen el mismo nombre. Suelo decir que esquema es el «cajón» donde están los objetos de un usuario.

Por ejemplo: conectados como el usuario HR, la siguiente consulta nos muestra el nombre de las tablas del esquema HR:
select    table_name
from     user_tables;
TABLE_NAME
------------------------------
COUNTRIES
DEPARTMENTS
EMPLOYEES
JOBS
JOB_HISTORY
LOCATIONS
REGIONS

Si queremos ver las tablas de un esquema distinto, lo hacemos sobre ALL_TABLES y condicionamos para el propietario que deseemos. Necesitaremos tener acceso a todas las tablas para poder verlas (privilegio SELECT ANY TABLE), o permiso sobre la tabla en cuestión y solo veremos esas tablas.
select   table_name
from    ALL_TABLES
where  owner='HR';
En la vista ALL_TABLES tendremos la información de las tablas pertenecientes al usuario con el que hemos iniciado sesión y de las tablas sobre las que tiene algún permiso explícito. Para usar DBA_TABLES tendremos que tener un rol DBA y se podrá ver la descripción de todas la tablas de la base de datos.

viernes, 24 de junio de 2011

Oracle: Precedencia de operadores.

Tanto en el lenguaje SQL, como en el lenguaje PLSQL. La precedencia de operadores es la siguiente:

Tabla: operador, operación

Lo aconsejable es utilizar paréntesis para ver explícitamente lo que se quiere y facilite el entender.

Para más información en: Oracle

jueves, 23 de junio de 2011

Ver select de una vista en sqlplus

Si tenemos alguna vista de la cual queremos conocer la SELECT que tiene, entonces consultamos en alguna de las vistas del diccionario de datos como:
—USER_VIEWS (información sobre vistas del usuario)
—ALL_VIEWS (información sobre todas las vistas a las que se tiene permiso)
—DBA_VIEWS (información sobre todas las vistas de la base de datos).

Podemos describir por ejemplo ALL_VIEWS por ver la información que nos da.
respuesta al mandato desc

Lo que nosotros queremos es saber el código fuente (la SELECT) que tiene la vista. Así que consultamos el campo «TEXT», condicionando para la vista de nuestro interés y de quién. Recordar escribir en mayúscula el nombre de la vista y el nombre del propietario.
select    text 
from     all_views 
where   view_name='EMP_DETAILS_VIEW' 
     and  owner='HR';
Si no se visualiza toda la select de la vista, escribir: 
set long 2000
Esto nos mostrará 2000 caracteres de la columna que es de tipo «long». Si queremos ver más caracteres, ponemos una cifra mayor.

Salida de la select de ejemplo