Cambios en el CT6 de SQL Server 2008
En el CTP6 de SQL Server 2008 se dieron cambios en el estatuto MERGE y con el tipo de dato HIERARCHYID.
Cambios en el MERGE
En este CTP se soportan las siguientes claúsulas:
WHEN [TARGET] NOT MATCHED THEN
WHEN SOURCE NOT MATCHED THEN
Sin embargo en el siguiente CTP refresh se cambiará la sintaxis para que no sea tan confusa, y quedará de la siguiente forma:
WHEN NOT MATCHED [BY TARGET] THEN
WHEN NOT MATCHED BY SOURCE THEN
Cambios en HIERARCHYID
En el CTP 6, el método IsDescndent es aplicado an ancestro y acepta un hijo como entrada, por ejemplo:
.IsDescendant()
Esta sintaxis es un poco confusa y después del CTP6 se cambiará para la sintaxis sea la siguiente:
.IsDescendant()
Un ejemplo es el siguiente, utilizando sintáxis de CTP6, devuelve un empleado y todos sus subordinados en todos los niveles:
SELECT C.empid, C.empnombre, C.lvl
FROM dbo.Empleados AS P
JOIN dbo.Empleados AS C
ON P.empid = 3
AND P.hid.IsDescendant(C.hid) = 1;
Después de CTP6 quedaría de la siguiente forma:
SELECT C.empid, C.empnombre, C.lvl
FROM dbo.Empleados AS P
JOIN dbo.Empleados AS C
ON P.empid = 3
AND C.hid.IsDescendantOf(P.hid) = 1;
También el método Reparent será renombrado a GetReparentedValue.
Cambios en el MERGE
En este CTP se soportan las siguientes claúsulas:
WHEN [TARGET] NOT MATCHED THEN
WHEN SOURCE NOT MATCHED THEN
Sin embargo en el siguiente CTP refresh se cambiará la sintaxis para que no sea tan confusa, y quedará de la siguiente forma:
WHEN NOT MATCHED [BY TARGET] THEN
WHEN NOT MATCHED BY SOURCE THEN
Cambios en HIERARCHYID
En el CTP 6, el método IsDescndent es aplicado an ancestro y acepta un hijo como entrada, por ejemplo:
Esta sintaxis es un poco confusa y después del CTP6 se cambiará para la sintaxis sea la siguiente:
Un ejemplo es el siguiente, utilizando sintáxis de CTP6, devuelve un empleado y todos sus subordinados en todos los niveles:
SELECT C.empid, C.empnombre, C.lvl
FROM dbo.Empleados AS P
JOIN dbo.Empleados AS C
ON P.empid = 3
AND P.hid.IsDescendant(C.hid) = 1;
Después de CTP6 quedaría de la siguiente forma:
SELECT C.empid, C.empnombre, C.lvl
FROM dbo.Empleados AS P
JOIN dbo.Empleados AS C
ON P.empid = 3
AND C.hid.IsDescendantOf(P.hid) = 1;
También el método Reparent será renombrado a GetReparentedValue.
Comments