/*Ingreso de nuevo codigo -------->inicio*/

viernes, 28 de noviembre de 2014

LLAMANDO PROCEDIMIENTOS DESDE UN PROCEDIMIENTO

Buenas tardes con todos estimados, en esta oportunidad quisiera compartirle un caso que tuve el día de ayer. Se trata de procedimientos almacenados.

Problema:
¿Como llamar a un procedimiento almacenado pero que este a su vez llame a otros procedimientos y este a otro?
Ejemplo
create pocedure sp_procedure1
as
begin
 exec sp_procedure2
end

create procedure sp_procedure2
as
begin
 declare @n int=1
 while n<=10
 begin
  exec sp_procedure3
 set @n=@n+1
 end
end
......
y así sucesivamente.

Creo que llamar a varios procedimientos es algo normal para un programador, sin embargo se me complicó cuando al llamar al 3cer procedimiento este devolvía un valor a traves de un select  y no a través de una variable de retorno, es decir el cuerpo del 3cer procedimiento era así:

create procedure sp_procedure3
as
begin
 --Muchas Validaciones....
.
.
.
 select @va_retorno as va_retorno
end

Este tercer procedimiento devolvía un valor y además estaba siendo llamado por el 2do procedimiento pero que estaba en un while, como hacer esto??  Aunque me demoré un poco, valió la pena aprender, les comparto:

1. Cree una variable tipo table
2. Use el insert into

Lo más importante sería esto, porque después de almacenar lo que retorna el procedimiento 3 puedes tratar como se te antoje estos datos. Mas o menos quedó así:

create procedure sp_procedure2
as
begin
 declare @result table (id int identity, valor int)
 declare @n int=1
 while n<=10
 begin
  inser into @result(valor)
  exec sp_procedure3
 set @n=@n+1
 end
end

Se que tendrán muchas preguntas, porque tal vez no se entendió la idea, sin embargo pueden hacerme llegar sus dudas, preguntas que gustosamente trataré de ayudarles. Hasta la próxima.

martes, 18 de noviembre de 2014

Introducción a Sql Server 2008 R2 Parte 3

Buenos días:

Continuando el curso introductorio de Sql Server, continuaré con algunos select mas, para después entrar a otros temas.

En caso que no hayas descargado la BD de pruebas, puedes hacerlo guiándote del siguiente enlace: http://leyendocodigo.blogspot.com/2014/11/introduccion-sql-server-2008-r2-parte-1.html. Empecemos:

Order by, Group by, Sum, Min, Max, AVG, Count

--Usando order by
select
from Products
order by ProductName

--Similar al order by anterior, pero este es por indice
select *
from Products
order by 2

--Obtener los productos totales en stock por proveedor
select p.SupplierID as 'ID Proveedor', s.CompanyName as 'Compañia', SUM(UnitsInStock) as 'Stock'
from Products p
inner join Suppliers s on p.SupplierID=s.SupplierID
group by p.SupplierID, s.CompanyName

--Obtener todos los datos del que tenga menor stock, ordenado por nombre producto
select * from
Products
where 
UnitsInStock = (select MIN(UnitsInStock) AS 'Stock' from Products)
order by ProductName

--Obtener todos los datos del que tenga mayor stock, ordenado por nombre producto
select *
from Products
where
UnitsInStock = (select MAX(UnitsInStock) from Products)

--Obtener el promedio del precio y cantidad de cada orden de compra
select OrderID, AVG(UnitPrice) as 'Prom. Precio', AVG(Quantity) as 'Prom. Cantidad'
from [Order Details]
group by OrderID

--Obtener la cantidad de registro de los productos
select COUNT(ProductID) as 'Cantidad Reg.'
from Products

Bueno, ah sido todo por hoy. Saludos

lunes, 17 de noviembre de 2014

Introducción a Sql Server 2008 R2 Parte 2

Buenas tardes:

Prosiguiendo el curso de introducción, quisiera empezar con los famosos select, estoy seguro que a pesar de lo que publicaré no resolveré sus dudas (para aquellos que recién empiezan), sin embargo, pueden dejarme sus dudas o comentarios de criticas constructivas, y con gusto los responderé. Empecemos:

En caso que no hayas descargado la BD de pruebas, puedes hacerlo guiándote del siguiente enlace: http://leyendocodigo.blogspot.com/2014/11/introduccion-sql-server-2008-r2-parte-1.html

Un select sencillo, de la tabla "Employess":

SELECT * FROM Employess

Un select un poco mas complicado, de la tabla "Employess":

SELECT top 10 *
FROM Employees
WHERE LastName like '%Suy%'

Un select complicado, de la tabla "Employess":

declare @index varchar(20)='1|2|3'

select *
from Employees
where CHARINDEX('|'+RTRIM(LTRIM(convert(varchar(20),EmployeeID)))+'|','|'+@index+'|')>0

Con respecto, a este último select, primero declaro una variable de tipo varchar(20) llamado @index, además este contiene un cadena conformada por palotes (o como quiera llamarles '|'), después en where a través del charindex en el primer parámetro que recibe ponemos el Id del Empleado, en su segundo parámetro ponemos la variable que hemos declarado, sabemos que el CharIndex devuelve la posición inicial si se encuentra, en este caso del Id del Empleado, vea mas sobre CharIndex: http://msdn.microsoft.com/es-es/library/ms186323.aspx.  Los anteriores select son mas sencillos y no requieren mucha explicación.

Y así podemos ir haciendo select mas grandes y complejos, sin embargo, esto sería lo básico, además podemos usar las funciones que tiene el propio SQL Server: Count, AVG, Max, Min, Sum, etc.

Bueno eso fue todo por hoy, saludos.

Introducción a Sql Server 2008 R2 Parte 1

Buenas tardes:

En esta oportunidad vamos a descargar la base de dato(BD) Northwind para que sirva de ejemplo en nuestros próximos cursos. Vamos a trabajar solo con Northwind, aunque por default también se descargará Pubs.

Lo vamos a descargar de la página de Microsoft:
http://www.microsoft.com/en-us/download/details.aspx?id=23654

Una vez que lo hayan descargado, ejecuten el instalador SQL2000SampleDb.msi, luego van al disco C:\SQL Server 2000 Sample Databases, después abren el script: instnwnd.sql dentro del servidor sql server, antes de ejecutar comenten estas lineas:


Luego hagan un refresh a su servidor y listo. Explorando un poco la BD, encontrarán a parte de las tablas, vistas y procedimientos almacenados.



Fue todo para esta primera parte, hasta luego.

jueves, 31 de julio de 2014

Aprendiendo a Programar

Hola estimados:

Es un placer crear un blog, me siento un poco emocionado, espero cada vez traerles temas nuevos, o trucos con respecto a algunos lenguajes que conozco y vengo conociendo.

Tengo algunos años de experiencia: 1 año y medio como programador en aplicaciones de escritorio, y algunos meses como programador en web.

Como todo programador, cada día nos encontramos con diversos problemas pero siempre encontramos la solución, investigando, preguntando, etc, pero al final lo encontramos.

Los lenguajes de programación que conozco son: visual.net, javascript, además un poco de css, jquery.
Las Bases de Datos que conozco son: sql server 2008 r2

Espero con mucho optimismo compartir e ir aprendiendo con ustedes.