Numerar los resultados de una consulta SQL en Oracle

Queremos que los resultados de una consulta SQL en una base de datos ORACLE sean numerados del 1 al total de registros o filas obtenidas en la consulta.

Para ello podemos utilizar la función ROW_NUMBER()  de la siguiente forma:

Nos daría como resultado algo como esto:

En la sentencia SQL anterior, estamos indicando que numere los resultados de acuerdo al orden del campo DEPARTMENT_NAME (nombre del departamento) y le asigne a esa numeración el nomnre de NUMERO_CONSECUTIVO.  La cláusula ORDER BY en la función ROW_NUMBER() es obligatoria. Este ordenamiento es independiente de el orden que se le puede dar al resultado final. Si sólo existe el ordenamiento de la función ROW_NUMBER() en la sentencia SQL, el resultado de la consulta saldrá ordenado por el orden indicado en ésta. Por ejemplo la siguiente sentencia:

En donde agregamos que muestre el campo DEPARTMENT_ID y que el resultado final lo ordene por éste mismo campo, daría como resultado esto:

Como se puede observar, el orden del resultado ahora es por el campo DEPARTMENT_ID, sin embargo la numeración es asignada de acuerdo al orden del campo DEPARTMENT_NAME. Como vemos el departamento  llamado “Accounting” sigue conservando el número 1 en la columna “NUMERO_CONSECUTIVO”, el departamento “Administration” el número 2 y así sucesivamente.

¿Dudas? Deja tu comentario.

¡Hasta la próxima!

 

Cómo definir una llave primaria (primary key) en una tabla existente en Oracle.

Supongamos que tenemos una tabla sin llave primaria y todos sus campos fueron definidos para aceptar valores nulos. El comando CREATE TABLE de dicha tabla se ejecutó así:

Una llave primaria o PRIMARY KEY puede estar formada por uno o varios campos, cuyos valores permiten identificar un sólo registro en la tabla. Luego entonces el campo que vayamos a escoger no debe permitir valores nulos (sin valor) ni repetidos. Identificamos que los valores del campo CVE_ENT son irrepetibles y que identifican a un sólo registro en la tabla.

Para modificar las propiedades de este campo y  que este no permita nulos de ahora en adelante, ejecutamos la siguiente sentencia:

Alteramos la tabla ENTIDAD modificando el campo CEV_ENT especificándole la restricción NOT NULL. Una vez ejecutada la sentencia, el campo ya no permitirá valores nulos.

Una vez logrado esto, procedemos a definir el campo CEVE_ENT como llave primaria de la tabla de esta forma:

Alteramos la tabla ENTIDAD agregando la restricción llave primaria (PRIMARY KEY) llamada ENTIDAD_PK conformada por el campo CVE_ENT.

Cabe aclarar que la restricción PRIMARY KEY, en Oracle, lleva implícito el no aceptar valores nulos en los campos que la conforman, sin embargo es buena práctica especificar explícitamente antes que el campo o campos que conformarán dicha llave primaria no acepten nulos con la sentencia ALTER que vimos anteriormente, ya que algunos motores de bases de datos así lo requieren.

¡Hasta la próxima!

 

 

 

Como conectar a una base de datos Oracle 12c desde una aplicación .Net sin usar archivo tsnames.ora.

Enseguida les comparto el código en ¢# (c sharp) para hacer una conexión a una base de datos Oracle 12c desde una aplicación .Net sin usar archivo tsnames.ora externo que defina la conexión.

Antes de ejecutar el código sobra decir que debes contar con los controladores .Net (drives)  de conexión a Oracle 12c instalados en la máquina de desarrollo y el proyecto debe hacer referencia a la clase Oracle.ManagedDataAccess.

No olvides cambiar los valores de HOST (nombre o ip de la computadora donde está instalada la base de datos), PORT (puerto de conexión), SERVICE_NAME (nombre de la instancia de la base de datos Oracle), User Id (usuario) y Password (contraseña), por los valores correctos de tu base de datos.

¡Hasta la próxima!

Formatear campo fecha con sql en Oracle con la función to_char().

Varias formas de mostrar un campo fecha con la función to_char()  de sql en Oracle; asumimos en los ejemplos siguientes, que  el campo s.CREATED  es un campo de tipo date de una tabla cualquiera; abajo de cada uno se muestra la salida que obtendríamos para un mismo valor del campo aplicando la función to_char():

¡Espero y les sea útil!

¡No olviden visitar a los anunciantes!¡Hasta la próxima!

Fallo con la variable PATH al comprobar requisitos al instalar Oracle 12c.

Si al instalar Oracle 12c en Windows 10 te muestra un estado fallido relacionado con la variable PATH al momento de comprobar requisitos del sistema y, según el mensaje de verificación dice que se debe a la longitud de la variable PATH, puede que no sea la longitud de dicha variable el problema.

Al mostrar detalles del mensaje decía esto: “PRVF-3919 : Failed to retrieve value of environment variable “PATH”” y sugiere que pueden ser errores de privilegios o permisos como muestra la siguiente imagen:

Si revisas tu variable PATH y encuentras que su valor no está demasiado grande (más de 1024 caracteres) entonces puedes sin problemas indicarle al instalador que ignore el error activando  el cuadro de selección “Ignorar Todo” y proceder con la instalación. Así lo hice y Oracle está funcionando correctamente. Al parecer es un bug del instalador con la versión de Windows 10.

Que éste artículo les sea útil. ¡Hasta la próxima!

 

 

Errores al instalar SQL Server Express 2017 en Windows 10, problemas con el idioma español (México).

Los instaladores de SQL Server traen un problema añejo con el idioma cuando está configurado como español mexicano que al parecer no se ha corregido aún.

Al ejecutar el instalador de SQL Server Express 2017 en español, descargado desde su sitio web,  arroja el error que inicia con “This SQL Server setup media does not suppor the lenguaje of the OS …” (ver mensaje completo en la imagen siguiente:

O si lo hacemos directamente ejecutando el archivo SETUP.EXE nos arroja el mensaje “No se encuentra el contrato de licencia de SQL Server para la edición seleccionada, EXPRESS. …”:

Y no permite continuar con la instalación. El instalador en español sólo reconoce el idioma español de España así que para proceder con la instalación en una máquina con lenguaje español de México, es necesario cambiar el idioma en nuestra computadora.

Para solucionar el problema hay que cambiar el idioma y región. Vamos a Inicio->Configuración para abrir el panel de Configuración:

Una vez ahí seleccionamos Hora e idioma:

Enseguida seleccionamos Región e idioma:

Cambiamos el país a España y en la sección Idiomas damos clic en Agregar un idioma:

En el panel Agregar un idioma buscamos Español y de la lista de idiomas mostrados seleccionamos el Español Español:

Nos mostrara una lista de regiones con idioma español, seleccionamos el que dice Español (España):

Una vez seleccionado nos regresa al panel anterior. ahí en Idiomas, en el idioma Español (España) seleccionamos el botón Opciones:

Damos al botón Descargar que se encuentra bajo el texto “Descargar paquete de idioma”:

Esperamos que termine la descarga del paquete de idioma y enseguida nos llevara al panel Región e idioma. En la sección Idiomas nos aparecerá Español (España) con el mensaje “Será el idioma para mostrar la próxima vez que inicies sesión”.

Procedemos a cerrar e iniciar sesión o a reiniciar nuestra computadora y una vez hecho esto podemos hacer la instalación de SQL Server 2017 Express sin problemas. Una vez instalado, podemos regresar el idioma de nuestra computadora nuevamente a nuestro idioma favorito.

Regístrate en el blog para recibir notificaciones de nuevas entradas. Cualquier comentario es bienvenido. No olvides visitar los anunciantes.

¡Hasta pronto!

 

Instalar Oracle Sql Developer en Windows

Oracle Sql Developer es un programa gratuito creado por Oracle en lenguaje de programación Java para desarrollar y administrar su base de datos. El programa se puede descargar gratuitamente del sitio de Oracle.

Para descargar la versión más reciente del programa, abre la siguiente dirección en tu navegador preferido: http://www.oracle.com/technetwork/developer-tools/sql-developer/overview/index.html.

Aparecerá la siguiente página:

Da clic en el botón Download para proceder a descargar el programa. Aparecerá la página de descargas:

Selecciona la opción Accept License Agreement para aceptar las condiciones de licencia y de clic en la liga Download  que se activa (marcada con una flecha en la imagen siguiente) a la versión correspondiente a tu equipo (si tienes equipo con Windows de 64 bits selecciona Windows 64-bit with JDK incluided, esta versión del instalador, instalará tanto el programa como la versión necesaria de Java).

Si tienes Windows de 32 bits, será necesario descargar e instalar el programa JDK 8 (Java 8), antes de proceder a la instalación de Sql Developer. Si es el caso, ve a la sitio de descargas de Java dando clic en la liga JDK 8 (ver la imagen anterior)  o da clic aquí. Acepta la licencia y descarga la versión más reciente del producto llamado Windows x86. Una vez descargado, sigue las indicaciones que te mostrará el instalador.

Una vez que diste clic en la liga de descarga del SQL Developer, se te pedirá los datos de inicio de sesión en Oracle:

Si aún no has creado una cuenta en Oracle, da clic en Crear una cuenta. En caso contrario, proporciona el usuario y la contraseña y oprime Iniciar sesión. La descarga de de SQL Developer se iniciará.

Se descargará un archivo de tipo zip (comprimido), cuyo nombre pude variar al mostrado de acuerdo a la versión descargada,  el que contiene la carpeta de la aplicación comprimida:

El archivo de tipo zip no contiene un instalador de windows, contiene una carpeta llamada sqldeveloper que deberá ser extraída junto con su contenido en el lugar de tu preferencia:

En mi caso la descomprimí y copié al directorio  C:\Herramientas que creé previamenteNavegamos dentro de la carpeta sqldeveloper y ejecutamos el archivo sqldeveloper.exe dando doble clic sobre el.

Nos preguntará si deseamos importar la configuración de algún Sql Developer anterior, selecciona de acuerdo si quieres importar la configuración de una versión anterior o no. La imagen muestra que encontró una versión antigua, pero le diré que no me importe la configuración:

Nos aparecerá la pantalla principal de SQL Developer y nos preguntará si queremos estar enviando datos a Oracle para seguimiento de uso. La respuesta dependerá de ti. En mi caso le diré que no deseo enviar datos por lo que quitaré la opción Permitir informes de uso automáticos a Oracle y oprimiré el botón Aceptar.

¡Listo! Nos mostrará la pantalla principal de SQL Developer:

En artículos posteriores veremos el uso de este programa.

¿Te fue útil este artículo? Por favor visita los anuncios de los patrocinadores para seguir publicando más artículos como estos. ¿Alguna observación o sugerencia? Utiliza los comentarios.

¡Hasta pronto!

Mostrar el nombre del mes actual en español en Oracle usando la función to_char y sysdate.

¿Como forzar que la función to_char de Oracle regrese el nombre del mes en español? Cuando el sistema operativo de un equipo cliente, donde se ejecutan sentencias Sql de Oracle que obtienen el nombre del mes está en otro lenguaje que no sea español, el nombre del mes lo regresa en el idioma por defecto. Por ejemplo, si ejecutamos la sentencia de la siguiente forma en un equipo cliente donde su lenguaje es inglés:

Nos regresaría el nombre del mes en inglés como se muestra.

Si queremos forzar que regrese el nombre del mes en otro lenguaje, por ejemplo español, utilizaríamos esta forma:

Ahora el nombre del mes lo regresa en el lenguaje especificado.

O en lenguaje italiano sería:

¿Te fue útil el artículo? Por favor visita los patrocinadores para seguir publicando artículos como estos. ¿Tienes alguna duda informática? Déjame tu comentario.

¡Saludos!

Listar tablas desde SQL en Oracle, Postgresql y MySQL

Una vez conectados a la base de datos desde un cliente SQL, para listar las tablas a las que tenemos acceso en Oracle sería:

En Postgresql:

En la sentencia anterior sustituimos ‘public‘ por el nombre del esquema correspondiente si se tiene más esquemas en la base de datos.

En MySQL:

Donde nombre_base_de_datos se sustituye por el nombre de la base de datos a la que estamos conectados.

¡Saludos!

Obtener lista de valores separados por comas con sql en Oracle 10g

Si queremos obtener  una lista de valores separados por comas, cuyos valores representen el contenido de una columna de varias filas, en Oracle 10g, podemos usar la función PL/SQL WMSYS.WM_CONCAT.

Veamos un ejemplo más ilustrativo:

Nos daría como resultado:

Una sola fila con la lista de los nombres de empleados separados por comas.

Podemos también mostrar los resultados agrupados por otro campo, por ejemplo el número de departamento:

Por cada grupo, en esta caso número de departamento, crea una lista de los empleados pertenecientes a cada uno.

Hay que comentar que Oracle no recomienda el uso de esta función porque no está soportada por ellos. De hecho en la versión 12g está fución ha sido eliminada. A partir de la versión 11g fue reemplazada por LISTAGG la cual veremos en otra entrada.

Es posible también lograr el listado de  nombres por departamento en Oracle 10g  sin utilizar la función WMSYS.WM_CONCAT. Utilizando las sentencias analíticas de Oracle que se muestran aquí.

¡Hasta la próxima!