Normalmente un campo de property bag tiene esta estructura <EMP_DIRECTIVO_COOP>false</EMP_DIRECTIVO_COOP>
Sin embargo, si existen procedimientos almacenados que actualicen los valores de los property bag utilizando la función gen.set_pb_field_data
con un valor nulo, el campo del property bag "pierde" su estructura y queda asi <EMP_CODTPL_13VO />
cuando debería de quedar asi <EMP_CODTPL_13VO> </EMP_CODTPL_13VO>
Se sugiere seguir las siguientes recomendaciones:
Agregar este par de líneas al inicio de la función gen.set_pb_field_data
para que en el caso de que el valor a cargar sea nulo, no actualice nada
if @valor is null
return @xml
Validar que el valor a insertar no sea nulo
UPDATE exp.emp_empleos
SET emp_property_bag_data = gen.set_pb_field_data(emp_property_bag_data, 'Empleos', 'EMP_DEVENGA_COMISION', @variable_temp)
WHERE emp_codigo = @codemp
and @variable_temp is not null
Para revisar si tienen registros del property bag con estas inconsistencias pueden utilizar la siguiente sentencia
SELECT emp_codigo
FROM exp.emp_empleos
WHERE CHARINDEX('<EMP_CODIGO_BASIS/>',CONVERT(VARCHAR(MAX),emp_property_bag_data),1) > 0
Para depurar dichos registros, pueden utilizar la siguiente sentencia
UPDATE exp.emp_empleos
SET emp_property_bag_data.modify('delete /DocumentElement/*/EMP_CODIGO_BASIS')
where CHARINDEX('<EMP_CODIGO_BASIS/>',CONVERT(VARCHAR(MAX),emp_property_bag_data),1) > 0
answered
26 Sep '15, 14:02
sbarahona ♦♦
(suspended)
accept rate:
32%