Propósito
El procedimiento almacenado ExecuteForeignSQL proporciona una interfaz para la ejecución de consultas básicas de SQL en el servidor externo. Por ejemplo, puede utilizar ExecuteForeignSQL para crear o quitar una tabla en una base de datos en el servidor externo.
ExecuteForeignSQL transmite todas las consultas a través de SQL, pero no devuelve conjuntos de resultados, por lo que si se utiliza para ejecutar una sentencia SELECT o HELP, no verá ningún resultado.
Como parte del paquete del conector de Teradata QueryGrid se proporcionan ExecuteForeignSQL y un script de instalación. El DBA ejecuta manualmente el script para instalar ExecuteForeignSQL y luego otorga los privilegios adecuados. Antes de utilizar ExecuteForeignSQL, debe crear un servidor externo mediante el operador de tabla QGExecuteForeignQuery en la cláusula DO IMPORT WITH.
Sintaxis
CALL [ SYSLIB. ] ExecuteForeignSQL ( 'query_expression', 'server_name' ) [;]
Elementos de sintaxis
- SYSLIB.
- El nombre de la base de datos donde se encuentra el procedimiento almacenado.
- query_expression
- Una expresión de Teradata SQL válida.
La consulta se pasa sin analizar al servidor externo.
- server_name
- El nombre del servidor externo.
Notas sobre el uso
ExecuteForeignSQL proporciona una ejecución segura mediante un operador de tabla integrado junto con sesiones confiables para controlar la verificación de credenciales de inicio de sesión.
Un DBA puede selectivamente CONCEDER el privilegio para utilizar ExecuteForeignSQL.
Para llamar a ExecuteForeignSQL, primero debe crear un objeto de servidor externo que especifica el uso del operador de tabla TD_SYSFNLIB.QGExecuteForeignQuery:
DO IMPORT WITH TD_SYSFNLIB.QGExecuteForeignQuery;Solo se puede asociar un operador de importación y un operador de exportación a la vez con un servidor externo. Por eso, para ejecutar ExecuteForeignSQL en un servidor externo existente que se utiliza para consultas, puede crear un objeto de servidor externo separado con un nombre diferente para ejecutar ExecuteForeignSQL. Para ello debe contar con privilegios SELECT y EXECUTE FUNCTION en este operador.
Si hace referencia a un nombre de tabla, debe anteponer el nombre de esquema.
Las consultas SQL que devuelven conjuntos de resultados, como SELECT o HELP, se ejecutan en el sistema remoto, pero no se visualizan las filas resultantes. La consulta podrá continuar utilizando los recursos de CPU, de memoria y de E/S en el sistema remoto.
ExecuteForeignSQL puede utilizarse con grupos kerberizados.
Ejemplo: usar ExecuteForeignSQL
Antes de ejecutar ExecuteForeignSQL, debe crear el objeto de servidor externo y especificar DO IMPORT WITH TD_SYSFNLIB.QGExecuteForeignQuery, tal como se muestra en el ejemplo siguiente.
CREATE FOREIGN SERVER <fs_name> EXTERNAL SECURITY DEFINER TRUSTED TD_SERVER_DB.<auth_name> USING LINK('<linkName>') version('active') DO IMPORT WITH TD_SYSFNLIB.QGExecuteForeignQuery;
El ejemplo crea una tabla en el servidor externo:
CALL SYSLIB.ExecuteForeignSQL( 'create table tab1(c1 int, c2 string)', 'QG_Presto1');
Donde QG_Presto1 es el nombre del servidor externo.