Acceso de bases de datos cruzadas a procedimientos almacenados
Al crear un procedimiento almacenado utilizando el mandato CREATE [OR REPLACE] PROCEDURE, el mandato añade el procedimiento a la base de datos y al esquema a los que esté conectado. Puede acceder al procedimiento mientras está conectado a la base de datos donde se define el procedimiento almacenado, y también puede ejecutar procedimientos en otros esquemas de la misma base de datos o en otras bases de datos utilizando los métodos siguientes:
- Utilizar nombres de objeto completos al llamar a un objeto de procedimiento que
está en una base de datos diferente, por ejemplo:
MYDB.SCHEMA(ADMIN)=> EXEC OTHERDB.SCHEMA.UPDATEACCT(); - Utilizar un nombre schema.object al llamar a un objeto de procedimiento que
está en un esquema diferente de la misma base de datos, por ejemplo:
MYDB.SCHEMA(ADMIN)=> EXEC SCH_TWO.UPDATEACCT(); - Utilizar la variable de sesión PATH SQL para especificar las bases de datos y/o los esquemas
a buscar, para encontrar un nombre de procedimiento que no esté totalmente calificado. Para utilizar la variable de sesión PATH, especifique un mandato similar al siguiente:
MYDB.SCHEMA(ADMIN)=> SET PATH = <elem> [, <elem>];El valor de <elem> puede ser una base de datos, un esquema o las variables CURRENT_CATALOG, CURRENT_USER, CURRENT_SCHEMA o CURRENT_PATH. Cualquier cosa que especifique como <elem> debe resolverse en un nombre de base de datos.
Por ejemplo:
MYDB.SCHEMA(ADMIN)=> SET PATH = mydb, nzdb, customer; SET VARIABLEPara visualizar el valor de PATH, utilice el mandato siguiente:
MYDB.SCHEMA(ADMIN)=> SELECT CURRENT_PATH; CURRENT_PATH ------------------ MYDB,NZDB,CUSTOMER (1 row)
El sistema Netezza Performance Server utiliza la variable PATH durante la búsqueda de cualquier procedimiento no cualificado. Si no se ha establecido PATH, busca en la base de datos actual; de lo contrario busca en las bases de datos y esquemas especificados en PATH, en el orden en que se han especificado. El sistema Netezza Performance Server utiliza la primera coincidencia que encuentra, aunque pueda existir una coincidencia mejor en una base de datos posterior. Una coincidencia menos exacta es aquella que puede necesitar la conversión implícita de argumentos o puede producir un error debido a la posibilidad de que existan varias coincidencias. Además, el sistema Performance Server utiliza la variable de sesión PATH para buscar sólo procedimientos almacenados, funciones definidas por el usuario (UDF) y agregados definidos por el usuario (UDA). No hay soporte para otros tipos de objeto, por ejemplo tablas, secuencias, etc.
Si se invoca un procedimiento almacenado desde una base de datos diferente, los objetos no calificados se enlazan con objetos de la base de datos que hace la invocación, no en la base de datos donde se ha definido el procedimiento almacenado. Los procedimientos almacenados no cualificados, UDFs y UDAs son excepciones a esta regla porque el sistema Netezza Performance Server utiliza primero la variable PATH para buscar esos tres tipos de objetos antes de buscar dentro de la base de datos invocadora.
Si piensa invocar llamadas de bases de datos cruzadas a procedimientos almacenados que acceden a datos de otras bases de datos, asegúrese de que el procedimiento almacenado utilice nombres de objeto completos para hacer referencia a esos objetos de datos.
Las operaciones de grabación no funcionan entre bases de datos. Para los procedimientos que contienen mandatos para insertar, actualizar, suprimir, crear, truncar, modificar o descartar, asegúrese de estar conectado a la base de datos donde se ha definido el procedimiento almacenado.