miércoles, 25 de agosto de 2010
TRUNC en SQL Server
Cuando trabaje con Oracle utiliza mucho la función TRUNC de PL/SQL realmente es muy util esta función.
Funciona más o menos así: ingresa 21/08/1973 8:30:30 regresa 21/08/1973 00:00:00.
Pero adivinen que me di cuenta en SQL no existe, así que decidí crearla aquí está el código por si la necesitan.
Código:
CREATE FUNCTION dbo.trunc (@FechaEntrada datetime)
RETURNS datetime
AS
BEGIN
DECLARE @fechaSalida datetime
SET @fechaSalida = CONVERT(datetime, CONVERT(varchar(10),@input, 103), 103)
RETURN @fechaSalida
END
Como utilizarlo:
SELECT dbo.trunc(fecha)
FROM conta.tabla
Ver
Funciona más o menos así: ingresa 21/08/1973 8:30:30 regresa 21/08/1973 00:00:00.
Pero adivinen que me di cuenta en SQL no existe, así que decidí crearla aquí está el código por si la necesitan.
Como Utilizarlo
Código:
CREATE FUNCTION dbo.trunc (@FechaEntrada datetime)
RETURNS datetime
AS
BEGIN
DECLARE @fechaSalida datetime
SET @fechaSalida = CONVERT(datetime, CONVERT(varchar(10),@input, 103), 103)
RETURN @fechaSalida
END
Como utilizarlo:
SELECT dbo.trunc(fecha)
FROM conta.tabla
domingo, 15 de agosto de 2010
Ducati
Decidí escribir sobre Ducati por que recientemente vi un trailer de Tron, el protagonista usaba una Ducati.
La Ducati es la mejor moto del mercado, es una moto equilibrada, veloz, con una acceleración sorprendente.
No por algo Trinity en Matrix Reloaded (2003) uso una Ducati para salvar al key Maker, Ducati no ha salido solo en esa película, también en Viernes de locos, Si señor, Una pareja explosiva entre otras.
Comparando una Ducati es como un Ferrari. Puede haber Carros más rapidos, pero ver un Ferrari nos enamora, nos impresiona... Pues con una Ducati es lo mismo, todos los que tengan una moto te miraran con envidia y la gente de la calle te miraran sorprendidos buscando adivinar que moto es la que llevas, ya que no es una japonesa de las que se ven cada
Entre Ferrari y Ducati les puedo decir que ambos son vehículos de Culto en sus respectivas categorìas, la Ducati es el Ferrari de las motos...y algo mas accesible para la mayorìa de los humildes mortales, mientras que los autos Ferrari simplemente se desean y añoran pero no cualquiera puede poseerlos ni mantenerlos.
Adicional mente el 7 veces campeón del mundo y una leyenda viviente Valentino Rossi ha firmado con Ducati.
"Estamos encantados de anunciar que Valentino Rossi estará con nosotros a partir de 2011"
Gabriele Del Torchio,
Presidente de Ducati Motor Holding.
No es por presumir pero pueden ver la mia.
https://cid-2fcf5d65f3eb7bfb.photos.live.com/play.aspx/Ducati/DSC02981.JPG?ref=2
Ver
La Ducati es la mejor moto del mercado, es una moto equilibrada, veloz, con una acceleración sorprendente.
No por algo Trinity en Matrix Reloaded (2003) uso una Ducati para salvar al key Maker, Ducati no ha salido solo en esa película, también en Viernes de locos, Si señor, Una pareja explosiva entre otras.
Comparando una Ducati es como un Ferrari. Puede haber Carros más rapidos, pero ver un Ferrari nos enamora, nos impresiona... Pues con una Ducati es lo mismo, todos los que tengan una moto te miraran con envidia y la gente de la calle te miraran sorprendidos buscando adivinar que moto es la que llevas, ya que no es una japonesa de las que se ven cada
Entre Ferrari y Ducati les puedo decir que ambos son vehículos de Culto en sus respectivas categorìas, la Ducati es el Ferrari de las motos...y algo mas accesible para la mayorìa de los humildes mortales, mientras que los autos Ferrari simplemente se desean y añoran pero no cualquiera puede poseerlos ni mantenerlos.
Adicional mente el 7 veces campeón del mundo y una leyenda viviente Valentino Rossi ha firmado con Ducati.
"Estamos encantados de anunciar que Valentino Rossi estará con nosotros a partir de 2011"
Gabriele Del Torchio,
Presidente de Ducati Motor Holding.
No es por presumir pero pueden ver la mia.
https://cid-2fcf5d65f3eb7bfb.photos.live.com/play.aspx/Ducati/DSC02981.JPG?ref=2
martes, 10 de agosto de 2010
Consultas con parámetros opcionales sin SQL dinámico
5 comentarios:
Publicadas por
Carlos Juan
a la/s
8:27 p.m.
Etiquetas:
linq from sql,
parameter opcional
Tiene que hacer una aplicación que se consulta a una tabla y que los usuario se le presentan 3 campos que se usarán para filtrar los resultados que se muestran al usuario. Todos ellos son campos opcionales. La pregunta es cuál es la mejor aplicación de la solución.
¿Soluciones?
1.) SQL dinámico
Es la opción más común, lo malo es que propensa a SQL injection y propenso a errores,
Sé que usted puede utilizar parámetros con que hasta cierto punto, pero creo que todavía no es una buena
elección por las siguientes razones.
1.1 Difícil de leer de leer
1.2 Dificil de formateo, depuración, etc.
Por estas razones, le recomiendo mantenerse alejado de esta opción.
2.) Stored Procedure
Le recomiendo usar la técnica de controles Or y NULL en la cláusula where. A continuación se muestra un ejemplo de un fragmento de T-SQL.
3.) LINQ
Puede utilizar LINQ to SQL o LINQ to Entities para resolver el problema
Es la mejor opción es una manera extremadamente fácil de implementar la funcionalidad deseada, adicionalmente LINQ tiene la característica del diseño protegido de inyección de SQL. Sin embargo esto no quiere decir que no utilizar un procedimiento almacenado.
Código:
Como usarlo:
Nota:
para usar like tiene que hacer un using System.Data.Linq.SqlClient;
Código:
protected void Button1_Click(object sender, EventArgs e)
{
int? id = null;
string nombre = null;
int? cat = null;
if(TextBox1.Text!="")
id = Convert.ToInt32(TextBox1.Text);
if (TextBox2.Text != "")
nombre =TextBox2.Text;
if (TextBox3.Text != "")
cat = Convert.ToInt32(TextBox3.Text);
//List pro = Buscar(1, null, null);
List pro = Buscar(id, nombre, cat);
GridView1.DataSource = pro;
GridView1.DataBind();
}
public List Buscar(int? id, string nombre, int? cat)
{
NortwindDataContext db = new NortwindDataContext();
var query = from p in db.Products
select p;
if (id != null)
{
query = query.Where(p => p.ProductID == id);
}
if (nombre != null)
{
query = query.Where(p => SqlMethods.Like(p.ProductName, "%" + nombre + "%"));
}
if (cat != null)
{
query = query.Where(p => p.CategoryID == cat);
}
return query.ToList();
}
Ver
¿Soluciones?
1.) SQL dinámico
Es la opción más común, lo malo es que propensa a SQL injection y propenso a errores,
Sé que usted puede utilizar parámetros con que hasta cierto punto, pero creo que todavía no es una buena
elección por las siguientes razones.
1.1 Difícil de leer de leer
1.2 Dificil de formateo, depuración, etc.
Por estas razones, le recomiendo mantenerse alejado de esta opción.
2.) Stored Procedure
Le recomiendo usar la técnica de controles Or y NULL en la cláusula where. A continuación se muestra un ejemplo de un fragmento de T-SQL.
3.) LINQ
Puede utilizar LINQ to SQL o LINQ to Entities para resolver el problema
Es la mejor opción es una manera extremadamente fácil de implementar la funcionalidad deseada, adicionalmente LINQ tiene la característica del diseño protegido de inyección de SQL. Sin embargo esto no quiere decir que no utilizar un procedimiento almacenado.
Código:
Como usarlo:
Nota:
para usar like tiene que hacer un using System.Data.Linq.SqlClient;
Código:
Create proc BuscarClientes
@ProductID int= NULL ,
@ProductName varchar(40)= NULL ,
@CategoryID int= NULL
as
SELECT ProductID,ProductName,CategoryID,UnitPrice
FROM dbo.Products
WHERE
((@ProductID is null) or (@ProductID=ProductID))
AND
((@ProductName is null) or (ProductName like '%' + @ProductName + '%'))
AND
((@CategoryID is null) or (@CategoryID =CategoryID))
Formas de usarlo:
EXEC BuscarClientes 1,null,null
EXEC BuscarClientes null,'queso',null
EXEC BuscarClientes null,null,1
EXEC BuscarClientes
protected void Button1_Click(object sender, EventArgs e)
{
int? id = null;
string nombre = null;
int? cat = null;
if(TextBox1.Text!="")
id = Convert.ToInt32(TextBox1.Text);
if (TextBox2.Text != "")
nombre =TextBox2.Text;
if (TextBox3.Text != "")
cat = Convert.ToInt32(TextBox3.Text);
//List
List
GridView1.DataSource = pro;
GridView1.DataBind();
}
public List
{
NortwindDataContext db = new NortwindDataContext();
var query = from p in db.Products
select p;
if (id != null)
{
query = query.Where(p => p.ProductID == id);
}
if (nombre != null)
{
query = query.Where(p => SqlMethods.Like(p.ProductName, "%" + nombre + "%"));
}
if (cat != null)
{
query = query.Where(p => p.CategoryID == cat);
}
return query.ToList
}
viernes, 6 de agosto de 2010
Algunas fotos interesantes
Casamiento por amor
Abbey Road los simpson
Twilight
Twilight Edward en problemas
La causa de todos los problemas informáticos.
Una Matriz muy interesante de los Sistemas Operativos
Una matriz ingresarte de tecnologías de desarrollo.
Anuncio de Visual studio team system
Not comments
jueves, 5 de agosto de 2010
Winnie Cooper Salio en big bang theory
Winnie Cooper Salio en big bang theory que pensara Kevin que su ex salga con Raj.
Ya en serio Danica McKellar la que interpreto a Winnie Cooper en Los años maravillosos salio en big bang theory.
Ver en youtube.
http://www.youtube.com/watch?v=ZHZiJkWq6DY
Algunas fotos para el recuerdo.
Ver
Ya en serio Danica McKellar la que interpreto a Winnie Cooper en Los años maravillosos salio en big bang theory.
Ver en youtube.
http://www.youtube.com/watch?v=ZHZiJkWq6DY
Algunas fotos para el recuerdo.
Oficialmente estamos en el Futuro
El mes pasado llegó aquel lejano día, el día en el que Marty McFly llegó al futuro en el Delorean...
Sin embargo, si pusieron atención a la película este viaje nunca se llego a realizar, solo fue una ejemplo que puso el doctor Emmett Brown.
Suscribirse a:
Entradas (Atom)