Documentos de Académico
Documentos de Profesional
Documentos de Cultura
FUNCIONES DEFINIDAS
POR EL USUARIO
DEFINICIÓN
¿Qué significa función definida por el usuario?
Una función definida por el usuario (UDF) es un elemento común en los lenguajes de
programación y la principal herramienta de los programadores para crear aplicaciones con
código reutilizable. Dado que los programas se componen principalmente de código que
proviene del programador, o en este caso del usuario, la mayor parte se compone de funciones
definidas por el usuario puntuadas ocasionalmente por funciones integradas.
Las funciones definidas por el usuario (UDF) son extensiones o adiciones a las funciones
incorporadas existentes del lenguaje SQL.
Una función definida por el usuario puede ser una función escalar, que devuelve un solo valor
cada vez que se invoca; una función agregada, a la que se pasa un conjunto de valores
similares y devuelve un solo valor para el conjunto; una función de fila, que devuelve una fila o
una función de tabla, que devuelve una tabla.
FUNCIONALIDAD Y
VENTAJAS DEL
USO DE
FUNCIONES
En los esquemas SYSFUN y SYSPROC se proporcionan varias funciones definidas por el usuario.
Una función definida por el usuario (UDF) sólo puede ser una función agregada si su fuente es una
función agregada existente. Se hace referencia a una UDF mediante un nombre de función calificado o
no calificado, seguido de paréntesis que encierran los argumentos de la función (si los hay). Una
función de columna escalar definida por el usuario registrada con la base de datos puede aludirse en
los mismos contextos en que pueda aparecer cualquier función incorporada. Una función de fila
definida por el usuario sólo puede aludirse implícitamente cuando está registrada como función de
transformación para un tipo definido por el usuario. Una función de tabla definida por el usuario
registrada en la base de datos sólo puede aludirse en la cláusula FROM de una sentencia SELECT.
Una función escalar se puede utilizar siempre que se pueda utilizar una expresión. No obstante,
las restricciones que se aplican al uso de expresiones y funciones agregadas, también se aplican
cuando una expresión o función agregada se utiliza dentro de una función escalar. Por ejemplo,
el argumento de una función escalar puede ser una función agregada sólo si se permite una
función agregada en el contexto en el que se utiliza la función escalar.
Las restricciones sobre el uso de funciones agregadas no se aplican a las funciones escalares,
ya que una función escalar se aplica a un único valor en vez de aplicarse a un conjunto de
valores.
Cuando se devuelven los resultados de la consulta, puede formatear los datos y convertirlos en
informes, diagramas, gráficos, correlaciones o paneles de instrumentos.
• Consultas analíticas
Con las consultas analíticas, puede combinar datos de varias consultas que abarcan desde
los mismos orígenes de datos u orígenes de datos diferentes en un conjunto de resultados.
• Consultas relacionales
QMF ofrece distintos métodos de consulta en función del nivel de conocimientos de SQL que
tiene el usuario.
• Consultas multidimensionales
QMF para Workstation y QMF para WebSphere dan soporte al análisis multidimensional
mediante el uso de consultas OLAP.
USO DE ROLES Y
PERMISOS DE ACCESO
ROLES DE NIVEL DE BASE
DE DATOS
DEFINICIÓN
Los roles fijos de base de datos se definen en el nivel de base de datos y existen en
cada una de ellas. Los miembros de los roles de base de datos db_owner pueden
administrar la pertenencia a roles fijos de base de datos. También hay algunos roles de
base de datos con fines especiales en la base de datos msdb.
Puede agregar cualquier cuenta de la base de datos y otros roles de SQL Server a los
roles de nivel de base de datos.
Los permisos de los roles de base de datos definidos por el usuario se pueden
personalizar con las instrucciones GRANT, DENY y REVOKE. Para más información,
consulte Permisos (motor de base de datos).
FUNCIONES DE
SEGURIDAD
Amenazas potenciales
Los clientes que tienen agentes con cifrado activado se preocupan fundamentalmente por lo siguiente:
Control de acceso
El control de acceso puede ser de los siguientes tipos:
El cifrado utiliza la ciberseguridad para defenderse de la fuerza bruta y los ciberataques, incluidos
el malware y el ransomware. El cifrado de datos funciona asegurando los datos digitales
transmitidos en la nube y los sistemas informáticos.
El cifrado asimétrico, también conocido como criptografía de clave pública, cifra y descifra los
datos utilizando dos claves asimétricas criptográficas independientes. Estas dos claves se
conocen como "clave pública" y "clave privada".
El cifrado simétrico es un tipo de cifrado en el que solo se utiliza una clave simétrica secreta
para cifrar el texto sin formato y descifrar el texto cifrado.
CONTROL DE ERRORES
EN TRANSACT SQL.
FUNCIONES ESPECIALES
DE ERROR.
DEFINICIÓN
el desarrollo y programación de Control de Errores con Transact-SQL (TSQL) en SQL Server
2000 y SQL Server 2005 (y superiores), una práctica muy recomendada y necesaria para el
desarrollo y programación de procedimientos almacenados y transacciones con SQL Server. Se
describe la utilización de la función del sistema @@ERROR, la opción del sistema
XACT_ABORT, la sentencia RAISERROR, la utilización de errores definidos por el usuario
(sp_addmessage), y los bloques TRY/CATCH (disponible desde SQL Server 2005).
Un problema típico, es cuando se necesitan consultar varias funciones del sistema, como
@@ERROR y @@ROWCOUNT. En éste caso, NO se deben consultar las dos variables en
sentencias diferentes (recordar que tienen efecto en la consulta inmediatamente anterior), por
lo que habrá que declarar y utilizar algunas variables temporales, y depositar en ellas el
resultado de consultar estas variables del sistema, de forma similar a:
SELECT @TEMP_ROWCOUNT=@@ROWCOUNT
SELECT @TMP_ERROR=@@ERROR
La segunda línea de código estará haciendo referencia a si la línea anterior ha generado algún
error. La confusión de esto viene dada, porque en ocasiones se ponen estas dos líneas detrás
de un bloque de código, y se piensa que la segunda sentencia (la de @@ERROR) tiene efecto
sobre el bloque de código previo, cuando NO es así, tiene efecto sobre la línea de código
inmediatamente anterior (la del @@ROWCOUNT), por lo tanto dicha gestión de errores
simplemente no funcionará ¿visto? Sigamos.
UTILIZAR SET
XACT_ABORT
PARA
PROGRAMAR
TRANSACCIONES
Resulta muy cómodo utilizar la opción XACT_ABORT para la programación de transacciones. Al
activar esta opción (SET XACT_ABORT ON), si se produce un error en tiempo de ejecución, SQL
Server deshará completamente todas las transacciones abiertas. Esto simplifica enormemente la
programación de transacciones, y además, está disponible desde SQL Server 2000 (toma ya ;-),
y así evitamos tener que hacer la tediosa tarea de comprobar el valor de @@ERROR después
de cada sentencia para poder deshacer la transacción correctamente, y que en caso de errores
no se confirmen resultados parciales.
Sin activar XACT_ABORT, que es el comportamiento por defecto de SQL Server (SET
XACT_ABORT OFF), sería necesario comprobar @@ERROR sucesivas veces (ojo, que estoy
descartando el uso de TRY/CATCH para ahora, y que veremos después), como en el siguiente
ejemplo:
Sin embargo, utilizando XACT_ABORT activado resulta mucho más sencillo, teniendo la garantía
de que se confirmará o deshará la transacción por completo sin necesidad de programar las
comprobaciones de la función del sistema @@ERROR:
ERROR_NUMBER().
ERROR_MESSAGE().
ERROR_SEVERITY().
ERROR_STATE().
ERROR_PROCEDURE().
ERROR_LINE()