Showing posts with label SQL. Show all posts
Showing posts with label SQL. Show all posts

Tuesday, May 22, 2007

Microsoft .NET Entity Framework

Microsoft introducira pronto un lenguage de Consulta sobre LINQ llamado por el momento eSQL(Entity Structured Query Language) y me parece excelente, era lo que hacia falta para combinar los tipos anonimos de C# 3.5 con acceso a datos. Puedes hacer algo como esto: SELECT p.ProductName, p.UnitPrice FROM NorthwindContainer.Products as p ORDER BY p.ProductName Desc Segun el ejemplo me estoy ahorrando un INNER JOIN y solo estoy tratando entidades de datos. Muy bueno, solo espero que normalize los resultados y traduzca el eSQL a todo tipo de bases de datos. No mas GetString(int ordinal) aunque con lambda expressions era mas facil(("AccountName")=>reader.Read)). El articulo TSS.NET explica todo con detalle y se los dejo a la mano. De todas formas no se emocionen porque saldra despues de orcas, a mediados 2008 o 2009 con el tipico SP de Visual Studio que sale en el primer año jejejeje. Ahora, muchas facilidades para consulta de datos directos verdad? que paso con aquello de crear todo en procedimientos almacenados? No, no hay SQL Injection posible en LINQ, pero estaria optimizado? No.. o sera que el proveedor lee mi codigo IL para precompilar SQL? No lo creo.

Monday, April 30, 2007

DATEADD en PostgreSQL 8

Actualmente me ecuentro migrando un portal de MS SQL Server a Postgress. Me encontre con un tema que me demostro una vez mas el poder de PostgreSQL sobre Microsoft SQL Server 2000/2005. En Microsoft SQL Server existe la funcion DATEADD , que permite agregar partes de datetime( dias,meses,años,minutos,segundos) una fecha existente, por ejemplo: Esta function en SQL Server: select getdate() as FechaActual, dateadd(day,2,getdate()) as DiasDespues Da como resultado: FechaActual DiasDespues ------------------------------------------------------ ------------------------------------------------------ 2007-05-01 08:19:22.693 2007-05-03 08:19:22.693 (1 filas afectadas) En PostgreSQL no existe el DATEADD, existe el operador de suma el cual actua entre operandos de tipo timestamp e interval. select now() as FechaActual, now() + cast('2 day' as interval) as DiasDespues Una vez mas me asombra el poder de PostgreSQL como base de datos orientado a objetos sobre T-SQL que es un lenguage estructurado... bueno, SQL es Structured Query Language jejeje.

Friday, January 5, 2007

Campos XML en SQL-2005

En SQL Server 2005 tenemos la posilibilidad de crear campos XML validados con Schema. Que ventajas tiene crear Campos XML con esquema(con tipo) a crearlo sin esquema(sin tipo)?
  1. Garantizar que los datos Xml sean documentos validos.
  2. Garantizar que los datos Xml esten conformes a un modelo y ser validados velozmente por el motor de sql para mantener la integridad de los datos Xml.
  3. Permitir la aplicacion de Indices sobre las columnas Xml para agilizar la consulta del Documento almacenado.
Dependiendo de cual sea nuestro escenario, elejiremos crear Columnas con XML con Esquema si son el mismo. Este articulo se centra en demostrar la creacion de columnas XML con Esquema. Pasos para crear columnas XML con Esquema:
  • 1) Primero debemos crear un Schema XML en la base de datos.
CREATE XML SCHEMA COLLECTION
[Messaging].[MessageModel] AS N'
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="Message">
<xsd:complexType>
<xsd:complexContent>
<xsd:restriction base="xsd:anyType">
<xsd:sequence>
<xsd:element name="Body" type="xsd:string"/>
</xsd:sequence>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
</xsd:schema>'
  • 2) Luego debemos crear la tabla con el campo XML donde utilizaremos el SchemaXML creado anteriormente:
CREATE TABLE [Messaging].[Message](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Content] [xml](CONTENT [Messaging].[MessageModel]) NOT NULL,
CONSTRAINT [Message_PK] PRIMARY KEY CLUSTERED ([Id] ASC))
Ahora podremos utilizar la tabla de la siguiente forma:
INSERT INTO [MESSAGING].[MESSAGE](Content) 
VALUES('<Message>
<Body>Este es el mensaje enviado</Body>
</Message>')
Alli insertariamos un registro en la tabla Message con el XML ajustado al EsquemaXML de la columna 'Content'. De esta forma podemos realizar una consulta a la tabla con nuestra columa XML y en SSMS(SQL Server Management Studio) podremos ver los datos de esta forma.