Entradas

Mostrando las entradas etiquetadas como Bases de datos

Pasar una tabla como parámetro en un stored procedure | SQL Server.

Imagen
 Para realizar está implementación debemos crear un nuevo tipo de dato en la base de datos SQL Server, para crear un nuevo tipo de dato usaremos el comando CREATE TYPE y posteriormente pasaremos este tipo como parámetro de tipo READONLY, pero para no decir más, les dejo un video con los pasos necesarios para realizar está acción. 

Orden de procesamiento lógico de la instrucción SELECT.

Hace días tuve la oportunidad de estar en un curso de Arquitectura de Software, en donde el arquitecto tomo un tema muy interesante el orden de procesamiento lógico de las instrucciones, dado esto me causo mucho interés por el hecho que desde aquí comienza el buen rendimiento de una consulta.  A continuación se muestra el orden de procesamiento lógico, para la instrucción SELECT. Esté orden determina cuando se ponen a disposición de los objetos definidos en un solo paso a las clausulas en las etapas subsiguientes. Al ejecutar una consulta el orden de ejecución es:  1. FROM  2. ON 3. JOIN  4. WHERE 5. GROUP BY  6. WITH CUBE or WITH ROLLUP 7. HAVING 8. SELECT  9. DISTINCT  10. ORDER BY  11. TOP

Número de filas afectadas por instrucción PL/SQL en Oracle [Utilidades].

[UTILIDADES Oracle 11g] La instrucción sql%rowcount obtiene el número de filas afectadas por un INSERT , UPDATE o DELETE o la cantidad de registros devueltos en un SELECT INTO . En el siguiente ejemplo se observa el comportamiento y devuelve el número de filas que se eliminaron. CREATE TABLE employees_temp AS SELECT * FROM employees; DECLARE   mgr_no NUMBER(6) := 122; BEGIN   DELETE FROM employees_temp WHERE manager_id = mgr_no;   DBMS_OUTPUT.PUT_LINE('Number of employees deleted: ' || TO_CHAR(SQL%ROWCOUNT)); END; / Más información en: https://docs.oracle.com/cd/B19306_01/appdev.102/b14261/sqloperations.htm

Utilizando Procedimientos Almacenados de Sistema de Sql Server.

Imagen
Existen gran cantidad de procedimientos de sistema que nos pueden proporcionar distintos datos que pueden ser muy importantes al momento de manejar o administrar una base de datos Microsoft SQL Server.  Para ejecutar un procedimiento almacenado de sistema se puede realizar utilizando el comando EXECUTE, como cuando ejecutamos cualquier otro, además es necesario proporcionar el nombre del procedimiento y vincular los parámetros del mismo.  Algunos ejemplos de procedimientos de sistema podrían ser:  Obtener Todas las Bases de Datos Del Servidor. EXECUTE sys.sp_databases; Obtener el detalle de una tabla. EXECUTE ssys.sp_helpp (nombre de la tabla como parámetro).  Obtener información de bloqueos y ejecuciones actuales.  EXECUTE sys.sp_who2 Realmente existe una gran variedad de procedimientos almacenados de sistema que nos pueden ayudar a la administración de la base de datos, por lo que estos solo son algunos sencillos procedimientos almace

Clausula INTO (creacion de tabla con registros a partir de select).

El día de hoy respondiendo la pregunta de @erickNungaray, es posible crear una tabla física e insertar datos en ella en una sola instrucción a partir de otra tabla (o varias tablas) con la siguiente sintaxis:  SELECT CAMPOSNUEVATABLA into NombreNuevaTabla FROM TABLA WHERE CONDICIONES; Esto quiere decir, que es posible generar una tabla a partir de una consulta que nosotros realicemos, por lo que al hacer esto se generara unos campos a partir de los campos que consultamos al mismo tiempo está tabla tendrá todos los registros obtenidos en la consulta.  Esto puede ser aplicado a tablas temporales únicamente con la siguiente sintaxis:  SELECT CAMPOSNUEVATABLA into #NombreNuevaTablaTemporal FROM TABLA WHERE CONDICIONES; Espero con esto se solucione tu duda.  Para mayor información pueden consultar la clausula INTO en msdn , o en el siguiente enlace:  https://msdn.microsoft.com/es-es/library/ms177563(v=sql.120).aspx

Reiniciar campo identity en SQL Server.

El día de ayer me hicieron una pregunta la cuál decidí escribir, ¿cómo reiniciar el valor de identidad de una tabla o si es posible hacerlo? Los valores identity son especificaciones que permiten que el campo correspondiente incremente en forma secuencia, basado en la regla especificada, por ejemplo identity(1,1) especifica que cada que se inserte un registro tomará el campo identity el valor de 1, 2, 3, 4, 5, 6 ... n.  Por lo que al momento de borrar un registro o que exista un error y no pueda insertar el registro en la tabla, el valor identity no se inicializa, si no que continúa con el valor siguiente:       Para modificar este comportamiento utilizaremos la siguiente instrucción: Sintaxis: DBCC CHECKIDENT ( <nombre_tabla> , RESEED , 0 ) Ejemplo: DBCC CHECKIDENT ( TblAlumnos , RESEED , 0 ) Compartan la información, dejen sus comentarios o dudas.  Saludos.

Creación de base de datos SQL (SQL Create DataBase).

Crear base de datos.  Introducción:  El objetivo de este articulo es crear una base de datos en SQL Server. Se mostraran las instrucciones concisas para aquellos que desean ver rapidamente lo que SQL Server es. Cabe mencionar que este tipo de instrucciones SQL se pueden utilizar en otros gestores de base de datos como Access, MYSQL, Oracle, DB2 o alguna otra plataforma de almacenamiento de datos. El SQL CREATE DATABASE. La instrucción CREATE DATABASE se utiliza para crear una base de datos.  Sintaxis para crear BASE DE DATOS CREATE DATABASE  nombreBaseDeDatos ; Ejemplo para crear BASE DE DATOS La siguiente sentencia SQL crea una base de datos llamada "Datos": CREATE DATABASE datos; Dejen sus dudas o comentarios. 

SQL SERVER – Obtener fecha de modificacion de procedimientos almacenados, funciones y tablas.

En estos días me ha tocado hacer interesante hasta cierto punto, ya que uno de mis clientes me solicito un pequeño aplicativo muy sencillo y simple que lo único que hace es conectarse a dos ambientes de base de datos y comparar los objetos que se tienen en un esquema y en otro mostrando cuales objetos existen y cuales no en una base de datos, así también en caso de existir cuales son los objetos más nuevos, mostrando una especie de versiones de esquemas de base de datos. Cuando me solicitaron esté pequeño aplicativo, una de mis primeras preguntas fue en que nos basaremos para determinar que objeto es más nuevo, el fácilmente basándose en los procesos que llevan a cabo me dijo en la fecha de modificación de mis objetos, de está manera les dejo algunos de los querys que utilice para determinar este detalle en cada uno de los componentes (objetos) de base de datos. Obteniendo los Procedimientos Almacenados (Stored Procedures). SELECT name, modify_date FROM sys.objects WHERE ty

Listar todos los procedimientos almacenados de una base de datos (T-SQL).

Esté articulo mostraremos como listar todos los procedimientos almacenados que se encuentran creados en una instancia de Sql Server, esto para responder a @JorgeLuis19 y @AlbertoHdz89, que nos hicieron el comentario en una publicación para realizar esto, sería de la siguiente manera: SELECT ROUTINE_NAME AS Nombre FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE = 'PROCEDURE' ORDER BY ROUTINE_NAME De esa manera mostraremos todas las rutinas que sean de tipo ' PROCEDURE '. Espero que les sirva, dejen sus comentarios o dudas.

Desarrollando Aplicaciones en Capas C# con WPF.

Aquí dejando un ejemplo de como estructurar una aplicación por capas dejen sus dudas y/o comentarios y suscriban se al canal si quieren recibir nuestros vídeos. Suscribanse y compartan si les gusto o sirvió de algo, y dejen sus dudas o comentarios.

Ejecutar script base de datos SQL desde linea de comandos.

Imagen
El día de hoy vamos a mostrar como ejecutar un script de base de datos de SQL Server desde línea de comando o también llamado el famoso MSDOS, muchos de nosotros nos preocuparemos porque deseo ejecutar desde línea de comando si tengo el excelente SQL Management claro yo también pienso lo mismo, bueno ok no, en esté caso lo necesitaremos ejecutar por línea de comando porque tenemos un archivo muy grande el cual al intentarlo ejecutar desde Management Studio de SQL nos ocurrira un error como este "Not enough storage is available to process this command (Exception from HRESULT: 0x800070008), como lo muestro en la imagen a continuación. Por esto y para esto requerimos hacer una ejecución desde línea de comandos, esto usualmente sucede cuando tenemos un archivo muy pesado para la ejecución, ahora si como podemos ejecutar un archivo es simple.  Abrimos una ventana de MSDOS (Simbolo del sistema) o como le quieran llamar una vez ubicados en la pantalla, colocaremos la siguient

SQL: Concatenar varios registros de una columna en una sola cadena / concatenate strings from a column into a single string

En días pasados tuve que optimizar un procedimiento almacenado, por segunda ocasión ya que esté procedimiento almacenado, era necesario ejecutar n veces durante el día, el procedimiento almacenado llego a tardar 2 hrs ejecutándose entre muchos cambios al final el tiempo fue  de 1 minuto con 50 segundos, entre muchos cambios de los que se hice era quitar unos CURSORES los cuales concatenaban columnas mediante una consulta, por lo que. Es probable que tengamos varios registros que pertenezcan a una misma columna o campo y los queremos concatenar para que la consulta sql nos devuelva un solo registro en esté campo tenemos algo así: name =========== Juan Francisco Erick Y nosotros necesitamos obtener algo así:  Juan, Franscisco, Erick es decir, como si tuvieramos que trasponer la columna, pero sin complicarnos. La solución es la siguiente:

Error while creating Linked server "Cannot obtain the schema rowset "DBSCHEMA_TABLES_INFO" for OLE DB provider "SQLNCLI10" for linked server ‘LinkedServerName’"

Hola hoy les traigo un aporte de SQL Server, en días pasados estuve teniendo un problema con la creación de un Linked Server de SQL Server 2008 a SQL Server 2000, por lo que tuve que ponerme a investigar al respecto el error que me ocurría era como el siguiente:  Error while creating Linked server "Cannot obtain the schema rowset "DBSCHEMA_TABLES_INFO" for OLE DB provider "SQLNCLI10" for linked server ‘LinkedServerName’" Al parecer cuando creamos un servidor vinculado de SQL Server 2008 a SQL Server 2000, a veces podemos tener errores, esto porque debemos tener instalada una versión SQL Server 2000 con service pack 3 o 4 mínimo para poder realizar eso sin problemas.  En esté blog mostraremos otra alternativa para resolver esté problema ya que investigando únicamente encontramos dos alternativas que son las siguientes:  Viene de un articulo de soporte de Microsoft, es donde debemos instalar un SQL Server 2000 con service pack 3 o 4 como min

Reiniciar identity SQL Server

El día de hoy apoyando a un amigo con un proyecto de programación en .NET me pregunta como puedo reiniciar el valor de una identidad de una tabla. Los valores identity aumentan de forma secuencial dentro de la tabla, esto representado por transacciones de inserción, cuando eliminamos un registro el identity no se restablece si no que la próxima vez que alteremos o intentemos alterar la tabla tendrá el valor último que se tenia antes de la eliminación. Para modificar esté comportamiento podemos utilizar el siguiente comando. DBCC CHECKIDENT ( <nombre_tabla> , RESEED , 0 ) Donde <nombre_tabla> es la tabla que queremos inicializar. Espero les ayuda, dejen sus comentarios y/o dudas. 

Cómo aplicar función TRIM en SQL Server

Alguien me preguntaba que como podría utilizar la función TRIM() en SQL Server y pues así como varios me han dicho que no existe, que no la han encontrado es cierto la función en SQL Server aún no la he encontrado pero se puede implementar o hacerla funcionar como si así lo fuera de otra manera. Es cierto que en gestores de base de datos como DB2 si existe dicha función pero en SQL Server hasta el momento al parecer no.  Cómo simular dicha función con SQL Server , pues tenemos otras dos funciones que nos podrían apoyar a resolver nuestro problema esto son con las funciones RTRIM() y LTRIM() , la cuál nos permite quitar los espacios a la derecha y a la izquierda en ambos casos. Por lo que podemos realizar esto con estás funciones.  Ejemplo de cómo realizar dicha función.   SQL SELECT * FROM dbo.Empleados emp WHERE LTRIM ( RTRIM (emp.[Nombre])) = LTRIM ( RTRIM (' Jose Pèrez ')); De está manera podemos ver que pudimos aplicar la función trim() pe

Manejo de Cursor en SQL Server (Recorrer Select)

Muy buen día a todos los que leen esté blog que vaya ya somos demasiados los lectores les agradezco por sus visitas espero se lleven algo de esté sitio. El día de hoy me levante programando así es estoy trabajando para una empresa de la ciudad de México cómo programador a distancia, por lo que en mi encomienda tenemos un sistema en Windows Presentation Foundation “WPF”, el cuál cuando fue concebido o creado no se hizo un buen trabajo con la base de datos, digamos no que no se haya echo un buen trabajo si no que tal vez no se tuvo la misma visión que la que hemos tenido nosotros actualmente. Por lo que comenzamos un proceso de cambios en el sistema y hemos comenzado esto a la par de producción o sea mientras el sistema funciona nosotros actualizamos hemos tenido que agregar Triggers y procedimientos almacenados extras para apoyarnos. Pero vamos al grano, hoy aprenderemos a cómo con un select podemos recorrer una tabla e ir haciendo cálculos o en su caso como el ejemplo que le

Manejo de paginado con consulta de SQL Server.

Para no perder costumbre hoy nuevamente estoy levantado desde temprano es un excelente sábado a donde me espera un viaje bastante largo por cierto, en estas semanas que he pasado de todo desde intenso trabajo, hasta el estrés total, hoy realmente no debería estar escribiendo estoy bastante agotado de esto de programación pocas veces llego a mi casa y digo no quiero saber que hay una computadora jaja. Bueno hoy aprenderemos cómo hacer un paginado con SQL Server, en mi caso les pasaré una consulta en SQL Server que básicamente tengo ya implementada está consulta si usted quiere utilizarla la tendrá que modificar colocándola en Stored Procedure (Procedimiento Almacenado). Es un ejemplo muy sencillo ya que últimamente aparte de dedicarme a programar con C#, pues he aprendido bastante en el uso de programación de Querys principalmente en DB2 AS400 pero pues SQL Server es todavía más sencillo. Les muestro el QUERY en este momento y posteriormente lo iré explicando, anexo es una tabla

Aprendiendo un poco de programación en Fox Pro. (Borrar datos lógicos y físicos de Fox Pro).

Hoy ya un poco tarde aquí en México aprovecho para escribir un poco, hoy fue un día totalmente distinto ya que de después del trabajo estaba planeado en tener una salida con mi novia, que seguramente va a leer esto pero bueno al final las cosas no fueron de está manera por lo que me fui a tomar una cerveza como es costumbre con unos buenos amigos y aprovechar a ir a cenar y bromear un rato. Al final terminamos programando sobre Visual Fox Pro, caray tenia años que no lo hacia pero pues no me vi tan mal recordando los conceptos básicos de Fox Pro, estuvimos haciendo inserciones múltiples ya que mi amigo requería para su trabajo nada del otro mundo claro. Estructura básica para hacer inserciones múltiples de distintas tablas: Insert Into TABLA(campo1, campo2... campoN) SELECT campo1 campo2, campoN FROM TABLA Nada fuera de lo normal lo interesante fue cuando llegamos a intentar borrar registros de una tabla por lo que realizabamos los querys correspondientes y la información de l

Consultas Combinadas "Joins SQL Server".

Imagen
Cuando se trabaja con base de datos en mas de una ocasión tocara hacer  consultas  a  tablas que se encuentran  relacionadas  ahora veremos como hacerlo usando  inner join . Para este ejemplo he creado una base de datos llamada  Clase  que cuenta con 2 tablas que están relacionadas  alumnos  y  asistencia . Como uniremos las dos tablas si queremos traer la información de las 2 tablas ahora haremos un Inner join.  Select * from alumnos al     Inner join asistencia as on as.Id_alumno = al.id"  De está manera obtenemos las coincidencias de las 2 tablas.  También al utilizar Inner Join de la misma manera podemos utilizar una clausula Where.  Select * from    Inner Join ...  Where .... Order By.....  Así es al utilizar Inner Join no nos modifica nada podemos utilizar de la misma manera las consultas....  También existen :  - Inner Join: Regresa todas las filas cuando existen en ambas tablas.  LEFT JOIN  : Devolver todas las filas de la tab

Obtener número de columnas de consulta o tabla con ROW_NUMBER().

Para obtener el número de columnas de una consulta o una tabla en db2, podemos utilizar la función de sistema ROW_NUMBER(), de cierta forma podemos delimitar hasta que número se visualice ejemplo: SELECT USER,ROW_NUMBER() OVER(ORDER BY USER) AS COUNT FROM TABLA FETCH FIRST 10 ROWS ONLY De está manera estamos delimitando que únicamente se hará el conteo hasta 10.  Si lo colocamos de la siguiente manera no se delimita la consulta y el ROW será contado hasta el final de la consulta.  ROW_NUMBER() OVER(ORDER BY USER) AS CONT Espero sirva de algo, saludos.