Publicado el

Numerar por grupos los resultados de una consulta SQL en Oracle

En el post pasado vimos como numerar los resultados de una consulta desde 1 a el total de registros devueltos por la consulta con la función ROW_NUMBER(). Ahora queremos que numere desde 1  hasta el número de registros que exista en cada grupo distinto de datos que regrese la consulta. Para ejemplificar usaremos la consulta siguiente a la tabla EMPLOYEES:

PARTITION BY le indica a la función ROW_NUMBER(), que va a numerar a partir de 1 por cada grupo de registro con diferente valor en el campo DEPARTMENT_ID.  ORDER BY le indica que va a numerar los registros de cada grupo de acuerdo al orden ascendente del valor del campo LAST_NAME

Veamos el fragmento del resultado que daría la consulta SQL anterior para entender mejor el funcionamiento:

Como vemos en el resultado, la numeración (columna NUMERO_CONSECUTIVO en el resultado) reinicia con 1 por cada valor de DEPARTMENT_ID distinto y los numera de acuerdo al orden del valor LAST_NAME: en el DEPARTMENT_ID “10” sólo existe 1 empleado y tiene el valor de “Whalen” en el campo LAST_NAME. En el DEPARTMENT_ID “20” existen 2 empleados con los valores “Fay” y “Hartstein” y los numeró de acuerdo al orden alfabético, a “Fay” le dió el NUMERO_CONSECUTIVO “1” y a “Hartstein” el 2. En el DEPARTMENT_ID “30” hay 6 empleados y los numeró del 1 al 6 de acuerdo al orden alfabético de LAST_NAME y así sucesivamente con el resto de los empleados.

Si existiera una clausula ORDER BY en la sentencia, el orden del despliegue de salida  sería por los campos indicados en dicha cláusula.

¿Dudas? ¿Preguntas? Deja tus comentarios. ¡Hasta la próxima!

 

 

Publicado el

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!

 

Publicado el

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!

 

 

 

Publicado el

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!

Publicado el

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!

Publicado el

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!

 

 

Publicado el

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!

 

Publicado el

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!

Publicado el

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!

Publicado el

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!