accessControl

checkOutObject

Descripción

Reserva un objeto (y todos sus hijos) para que solo la sesión actual del cliente pueda actualizarlo. Impide que otra sesión reserve un objeto (y todos sus padres) de forma exclusiva si se especifica checkOutType=Shared.

accessControl.checkOutObject <result=results> <status=rc> / checkoutParent=TRUE | FALSE, checkOutType="EXCLUSIVE" | "SHARED", ObjectSelector={objType="ACTION" | "ACTIONSET" | "CASLIB" | "COLUMN" | "TABLE", objType-specific-parameters} ;
Parámetros
ParámetroDescripción
checkoutParentIndica si se debe reservar el objeto padre si el objeto especificado no existe. El valor predeterminado es FALSE.
checkOutTypeEspecifica el tipo de reserva. Por defecto, una reserva es 'EXCLUSIVE', por lo que solo la sesión actual puede actualizar el objeto especificado (y sus hijos). Si especifica 'SHARED', la reserva no bloquea el objeto; simplemente impide que otras sesiones bloqueen el objeto (y sus padres).
ObjectSelectorEspecifica el tipo y los identificadores del objeto que se desea reservar.
objTypeDentro de ObjectSelector, especifica el tipo de objeto. Puede ser 'ACTION', 'ACTIONSET', 'CASLIB', 'COLUMN' o 'TABLE'.
actionCuando objType es 'ACTION', especifica el nombre de la acción.
actionSetCuando objType es 'ACTION' o 'ACTIONSET', especifica el nombre del conjunto de acciones.
caslibCuando objType es 'CASLIB', 'TABLE' o 'COLUMN', especifica el nombre del caslib.
tableCuando objType es 'TABLE' o 'COLUMN', especifica el nombre de la tabla.
columnCuando objType es 'COLUMN', especifica el nombre de la columna.
Creación de Datos de Ejemplo

Para poder probar la acción 'checkOutObject', primero creamos una tabla de ejemplo llamada 'CARS' en la caslib 'CASUSER' a partir de la tabla de ayuda 'SASHELP.CARS'. Esta tabla servirá como el objeto a reservar en los ejemplos.

¡Copiado!
1DATA casuser.cars; SET sashelp.cars; RUN;

Ejemplos

Este ejemplo inicia una transacción y realiza una reserva exclusiva en la tabla 'CARS'. Una vez ejecutado, ninguna otra sesión podrá modificar la tabla 'CARS' hasta que la transacción actual se confirme o se revierta.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1 
2PROC CAS;
3ACCESSCONTROL.checkOutObject / objectSelector={objType='TABLE', caslib='CASUSER', TABLE='CARS'}, checkOutType='EXCLUSIVE';
4 
5RUN;
6 
Resultado :
La acción se completa con éxito. El registro de SAS mostrará una nota de éxito junto con el ID de la transacción que se ha iniciado. Este ID es necesario para gestionar la transacción (confirmar o revertir).

Este ejemplo realiza una reserva compartida en la columna 'MSRP' de la tabla 'CARS'. Una reserva compartida no bloquea el objeto para su modificación, pero impide que otras sesiones obtengan un bloqueo exclusivo sobre ese objeto o sus objetos padres (en este caso, la tabla 'CARS' y la caslib 'CASUSER').

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1 
2PROC CAS;
3ACCESSCONTROL.checkOutObject / objectSelector={objType='COLUMN', caslib='CASUSER', TABLE='CARS', column='MSRP'}, checkOutType='SHARED';
4 
5RUN;
6 
Resultado :
La acción se completa con éxito, estableciendo una reserva compartida. El registro de SAS mostrará una nota de éxito y el ID de la transacción correspondiente.

En este ejemplo, intentamos reservar una tabla 'NonExistentTable' que no existe. Al establecer 'checkoutParent=true', la acción no falla, sino que reserva el objeto padre, que es la caslib 'CASUSER'.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1 
2PROC CAS;
3ACCESSCONTROL.checkOutObject / objectSelector={objType='TABLE', caslib='CASUSER', TABLE='NonExistentTable'}, checkOutType='EXCLUSIVE', checkoutParent=true;
4 
5RUN;
6 
Resultado :
La acción tiene éxito y reserva la caslib 'CASUSER' porque la tabla especificada no existía. El registro mostrará el ID de la transacción y una nota indicando que la caslib ha sido reservada.

FAQ

¿Cuál es el propósito de la acción checkOutObject?
¿Qué especifica el parámetro `checkOutType`?
¿Cómo se selecciona el objeto a bloquear?
¿Qué sucede si el objeto que intento bloquear no existe y uso el parámetro `checkoutParent`?
¿Es posible bloquear una columna específica de una tabla?