La sentencia SELECT CLIENT SPECIFIED se utiliza para leer un registro de base de datos y para establecer un objeto de bloqueo para el registro leído para impedir a otras ejecuciones a que realice cambios sobre el registro. Esta lección trata de explicarle cómo implementar correctamente esta instrucción.
- Sintaxis
SELECT result
FROM { {dbtab [AS tabalias]}
| join
| {(dbtab_syntax) [AS tabalias]} }
[CLIENT SPECIFIED]… .
- Efecto
El ID del mandante no se puede consultar en la condición WHERE, si la gestión automática del mandante no se desactiva mediante la adición CLIENT SPECIFIED después de FROM. Esto suele probarse mediante la comprobación de sintaxis. Si se consulta el ID del mandante en la condición WHERE y no se especifica CLIENT SPECIFIED (lo que a veces ocurre cuando se utilizan nombres de tabla alternativos, en combinaciones y cuando se especifica dinámicamente), la gestión automática del mandante no se desactiva. En este caso, hay dos condiciones para la columna del mandante: la condición implícita del controlador del mandante automático para el mandante actual y la condición explícitamente especificada. Si el mandante actual no se especifica en la condición explícitamente especificada, el conjunto de resultados está vacío. Resumiendo, con la adición CLIENT SPECIFIED se va a realizar la lectura en el mandante indicado en el filtro del WHERE.
- Aplicación práctica
En un programa ejecutable realizamos una lectura de datos en la tabla estándar SPFLI obteniendo en un área de trabajo el registro con el código LH para la compañía aérea y 400 para el número de conexión de vuelo del mandante 000. El programa se ejecuta en un mandante distinto al 000. Al finalizar mostramos en la salida los valores de los campos MANDT, CITYFROM y CITYTO del registro leído.
- Implemente el código fuente.
- Ejecutamos el programa.
- Conclusión
Con la adición CLIENT SPECIFIED podeos leer datos que se encuentran en mandates distintos al mandate de conexión o al mandate en el cual se ejecuta la aplicación.