Crear consultas SQL Server que generen XML

Pues es tan simple como añadir las sentencias FOR XML AUTO al final de la sentencia sql.

SELECT * FROM EMP FOR XML AUTO

Genera el siguiente resultado. Una fila con esta información.

<emp EMP_NO="7499" APELLIDO="ARROYO" OFICIO="VENDEDOR" DIR="7698" FECHA_ALT="1981-02-22T00:00:00" SALARIO="208000" COMISION="31200" DEPT_NO="33" />
<emp EMP_NO="7521" APELLIDO="SALA" OFICIO="VENDEDOR" DIR="7698" FECHA_ALT="1981-02-22T00:00:00" SALARIO="162500" COMISION="24375" DEPT_NO="33" />
<emp EMP_NO="7654" APELLIDO="MARTIN" OFICIO="VENDEDOR" DIR="7698" FECHA_ALT="1981-09-28T00:00:00" SALARIO="182000" COMISION="27300" DEPT_NO="33" />
<emp EMP_NO="7698" APELLIDO="NEGRO" OFICIO="DIRECTOR" DIR="7839" FECHA_ALT="1981-05-01T00:00:00" SALARIO="370500" COMISION="55575" DEPT_NO="33" />
<emp EMP_NO="7782" APELLIDO="CEREZO" OFICIO="DIRECTOR" DIR="7839" FECHA_ALT="1981-06-09T00:00:00" SALARIO="318500" COMISION="47775" DEPT_NO="10" />
<emp EMP_NO="7844" APELLIDO="TOVAR" OFICIO="VENDEDOR" DIR="7698" FECHA_ALT="1981-09-08T00:00:00" SALARIO="195000" COMISION="29250" DEPT_NO="33" />
<emp EMP_NO="7900" APELLIDO="JIMENO" OFICIO="EMPLEADO" DIR="7698" FECHA_ALT="1981-12-03T00:00:00" SALARIO="123500" COMISION="18525" DEPT_NO="33" />
<emp EMP_NO="7934" APELLIDO="MUÑOZ" OFICIO="EMPLEADO" DIR="7782" FECHA_ALT="1982-06-23T00:00:00" SALARIO="169000" COMISION="25350" DEPT_NO="10" />

Crear reglas en SQLServer

Una regla de SQLServer, es la entidad que nos permite validar datos de una columna en la inserción o actualización.

Por ejemplo, una regla podría indicar a nuestra columna Salario, que no se puedan meter cifras menores al salario mínimo interprofesional, por ejemplo en España, 641 euros.

La sintaxis sería la siguiente:

CREATE RULE NombreRegla

AS Condición

Donde Condición es de la misma forma que en un WHERE.

El ejemplo sería:

CREATE RULE SalarioMinimo AS @NuevoSalario &gt; 641

Una vez, creada, hay que vincularla a la columna de la tabla que queramos que tenga esta restricción. Pueden ser muchas columnas de distintas tablas.

Utilizaremos para vincular la regla, el procedimiento almacenado de sistema sp_bindrule. Para desvincularla, necesitaremos sp_unbindrule.

La sintaxis es la siguiente:

Vincular Regla:

EXEC sp_bindrule Funcion_rule,'Tabla.Columna'

Desvincular Regla: (Los parámetros van al reves)

EXEC sp_unbindrule 'Tabla.Columna', Funcion_rule

Para borrar una regla DROP RULE nombre. No nos dejará borrar reglas que tengan vínculos.