Mostrando entradas con la etiqueta Snippets. Mostrar todas las entradas
Mostrando entradas con la etiqueta Snippets. Mostrar todas las entradas

domingo, 23 de septiembre de 2018

SQL Server Snippets - Aproximación de valor real a N-ésimo decimal superior/inferior

Supóngase que se tiene un valor real o float, que se quiere aproximar al N-ésimo decimal superior. Por ejemplo:

jueves, 16 de agosto de 2018

SQL Server Snippets - Columna de fecha de última modificación en SQL Server

Supongamos que por cuestiones de control de modificaciones y auditoría, se quiere contar con un campo de fecha de última modificación en todas las tablas de una base de datos de SQL Server.

El inconveniente es que SQL Server no posee nativamente un tipo de dato que guarde la fecha de última modificación de un registro, el cual se actualice automáticamente al modificar una fila de datos. Por ello, una alternativa a esto es definir una columna de tipo datetime en cada tabla que se actualice cada vez que se modifique uno o más registros de esta, a través de un trigger.

sábado, 7 de julio de 2018

Cambiar la URL de repositorio GIT remoto

Hola, este es un pequeño snippet para cambiar la URL de un repositorio remoto de GIT, en un repositorio local.

Primero, para listar las URL actuales del repositorio remoto, ejecutamos el siguiente comando, dentro de la carpeta que contiene nuestro repositorio local:

$ git remote -v

Esto mostrará un resultado similar al siguiente:

origin    https://github.com/mi-usuario/mi-repositorio.git (fetch)
origin    https://github.com/mi-usuario/mi-repositorio.git (push)

Puede notarse que el único repositorio remoto referenciado es origin, que suele ser el nombre por defecto asignado al repositorio remoto al clonarlo.

Para asignar una nueva url a dicho remoto, basta ejecutar el siguiente comando:

$ git remote set-url origin https://github.com/mi-usuario/mi-repositorio-nueva-url.git

Para verificar el cambio, podemos listar nuevamente los repositorios remotos, obteniendo el siguiente resultado:

$ git remote -v
origin    https://github.com/mi-usuario/mi-repositorio-nueva-url.git (fetch)
origin    https://github.com/mi-usuario/mi-repositorio-nueva-url.git (push)

Saludos.

lunes, 18 de junio de 2018

Leer N caracteres en C/C++ con scanf + vaciar buffer

Hola, en esta ocasión quería compartirles un pequeño snippet de código de C/C++ que encontré un día de estos: Como leer una cadena de N caracteres con scanf.

Supongamos que queremos leer como máximo los primeros 8 caracteres que ingrese el usuario en la entrada estándar (stdin), y guardaremos el resultado en un arreglo de caracteres. Para ello, primero declaramos el arreglo con una longitud de 9 posiciones, que corresponderán a los 8 caracteres que deseamos leer, más una posición más para el caracter nulo, que marcará el fin de la cadena.

char cadena[9];

Luego procedemos a leer con scanf los 8 caracteres desde la entrada estandar:

scanf("%8s",cadena); 

Lo importante a notar es el especificador de formato s, que indica que lo que se leerá es una cadena de caracteres (string). La entrada se termina con un espacio en blanco, pero el número 8 indica que solamente se tomarán los primeros 8 caracteres que se encuentran en el buffer de la entrada estándar. Además, un caracter nulo es guardado al final de la cadena de caracteres. Es por ello que el arreglo utilizado debe ser por lo menos un caracter más grande que la longitud de entrada especificada. De no ser así podría darse el caso que se sobrescriban porciones de memorias adyacentes, generando resultados inesperados.

Finalmente, para limpiar el buffer de la entrada estándar: leer mientras se encuentre el caracter de salto de línea (\n) o el caracter de finalización.

char c;
while ((c = getchar()) != '\n' && c != EOF) { }

El código completo es el siguiente:



Saludos.

jueves, 8 de febrero de 2018

SQL Server Snippets - Buscar columna en base de datos

Publicado originalmente el 2013-02-19, en https://itsouvenirs.wordpress.com/2013/02/19/sql-server-snippets-buscar-columna-en-base-de-datos/.

Saludos a todos. Aprovechando un poco mi hora de almuerzo (para escribir el post, aunque lo publiqué en la noche, jejeje), quería compartirles este pequeño snippet, que consiste en una consulta para obtener el listado de tablas en las que exista una determinada columna, y es básicamente el siguiente:

Dónde nombre_columna es el nombre de la columna que se desea buscar.

El snippet puede modificarse para buscar también las columnas en cuyo nombre se incluya cierta palabra, cambiando el igual (=) de la condición por un LIKE, así:

En este caso, el nombre de las tablas podría repetirse, en casos en los que más de una columna de la tabla posea la palabra buscada.

A modo de ejemplo, al ejecutar el siguiente script en la base de datos AdventureWorks:

La consulta nos devuelve los siguientes resultados:
Esta consulta me ha sido de gran ayuda en casos en los que la base de datos “relacional” no posee todas las debidas relaciones entre las tablas, ya que me permite encontrar las tablas en las que aparece cierta columna, para tratar de descubrir las posibles relaciones faltantes.

La consulta ha sido probada en SQL Server 2005 hasta SQL Server 2012, y funciona sin problemas. Muy posiblemente funcionará en versiones posteriores.

SQL Server Snippets - Pausa

Publicado originalmente el 2013-02-13, en https://itsouvenirs.wordpress.com/2013/02/13/sql-server-snippets-pausa/.

En esta ocasión les dejo un snippet corto, pero muy interesante, que consiste en hacer cómo hacer una pausa en SQL Server. Esto vendría siendo similar a un sleep en otros lenguajes de programación.

El comando es sencillo:
waitfor delay '00:01:00'
En dicho ejemplo se muestra el comando para hacer una pausa por un minuto.

Ahora, ¿por qué diantres quería yo hacer una pausa en SQL Server? En mi caso, lo utilicé para hacer pruebas con un trigger. Puse el comando dentro de un trigger "on update" porque quería saber si la aplicación actualizaba los datos de cierta tabla antes de realizar una determinada acción. Si la acción se realizaba luego de la pausa, sabría que el trigger se ejecutaba antes de dicha acción, y esto a su vez me indicaría que los datos de la tabla eran actualizados antes de la acción.

Este es solo un ejemplo, pero pueden haber muchos otros casos. La verdad es que si la sentencia existe, es porque alguien pensó que serviría para algo, jejeje...

Por cierto, esta sentencia solo la he probado en SQL Server 2005, pero probablemente aún siga disponible, incluso en la versión 2012 2016.
Con la tecnología de Blogger.