Resolución del objeto de anclaje para un tipo de fila anclado

El objeto de anclaje de tipo anclado que incluye la palabra clave ROW se especifica con un nombre que podría representar una variedad de objetos, dependiendo del contexto y el número de identificadores en el nombre y el contexto de la cláusula ANCHOR.

Los objetos incluyen lo siguiente:
  • Una variable SQL
  • Un parámetro SQL
  • Una variable global
  • Una variable de módulo
  • Una tabla
  • Una vista.
La forma en la que se resolverá el objeto de anclaje dependerá del número de identificadores que contenga su nombre y del contexto de la sentencia que utiliza la cláusula ANCHOR.
  • Si el nombre del objeto de anclaje está especificado con un identificador, el nombre podría representar una variable de SQL, un parámetro de SQL, una variable de módulo, una variable global, una tabla o una vista.
  • Si el nombre del objeto de anclaje está especificado con dos identificadores, el nombre podría representar una variable de SQL calificada por etiqueta, un parámetro de SQL calificado por rutina, una variable global calificada por esquema, una variable de módulo, una tabla calificada por esquema o una vista calificada por esquema.
  • Si el nombre del objeto de anclaje está especificado con tres identificadores, el nombre podría representar una variable global calificada por el nombre del servidor actual y un esquema, una tabla calificada por el nombre del servidor actual y un esquema, una vista calificada por el nombre del servidor actual y un esquema o una variable de módulo calificada por esquema.
Una variable de SQL sólo puede ser candidata para nombre de objeto de anclaje si se utiliza la cláusula ANCHOR en una declaración de variable de SQL dentro de una sentencia compuesta. Un parámetro de SQL sólo puede ser candidato para nombre de objeto de anclaje si se utiliza la cláusula ANCHOR en una declaración de variable de SQL dentro de una sentencia compuesta empleada en un cuerpo de rutina de SQL. La resolución del nombre de objeto de anclaje que tiene un identificador se realiza mediante los pasos siguientes:
  1. Si la cláusula ANCHOR es una declaración de variable de SQL de una sentencia compuesta, busque un nombre de variable de SQL coincidente comenzando por la sentencia compuesta anidada más interna hasta llegar a la sentencia compuesta más externa.
  2. Si la cláusula ANCHOR es una declaración de variable de SQL de una sentencia compuesta que forma parte de un cuerpo de rutina, busque un nombre de parámetro de SQL coincidente para la rutina.
  3. Si la cláusula ANCHOR se utiliza en la definición de un objeto de módulo, busque un nombre de variable de módulo coincidente dentro del módulo.
  4. Si la búsqueda todavía no ha resultado satisfactoria, busque una tabla o una vista con un nombre coincidente en el esquema actual.
  5. Si la búsqueda todavía no ha resultado satisfactoria, busque una variable global de esquema con un nombre de variable global coincidente en la vía de acceso de SQL.
La resolución del nombre de objeto de anclaje que tiene dos identificadores se realiza mediante los pasos siguientes:
  1. Si la cláusula ANCHOR es una declaración de variable de SQL de una sentencia compuesta, busque un nombre de variable de SQL calificado coincidente comenzando por la sentencia compuesta anidada más interna hasta llegar a la sentencia compuesta más externa.
  2. Si la cláusula ANCHOR es una declaración de variable de SQL de una sentencia compuesta que forma parte de un cuerpo de rutina, busque un nombre de parámetro de SQL coincidente para la rutina si el primer identificador del nombre del objeto de anclaje coincide con el nombre de la rutina.
  3. Si la cláusula ANCHOR se utiliza en la definición de un objeto de módulo, y si el primer identificador coincide con el nombre de módulo de dicho módulo, busque un nombre de variable de módulo dentro del módulo que coincida con el segundo identificador.
  4. Si la búsqueda todavía no ha resultado satisfactoria, busque una tabla o una vista utilizando el primer identificador como nombre de esquema y el segundo identificador como nombre de vista o tabla.
  5. Si la búsqueda todavía no ha resultado satisfactoria, busque una variable global utilizando el primer identificador como nombre de esquema y el segundo identificador como nombre de variable global.
  6. Si la búsqueda no ha resultado satisfactoria y no ha buscado un módulo en el paso 3, busque un módulo en la vía de acceso de SQL con un nombre que coincida con el primer identificador. Si se encuentra, utilice el segundo identificador para buscar un nombre de variable de módulo publicado coincidente en el módulo.
  7. Si no encuentra un módulo utilizando la vía de acceso de SQL en el paso 6, consulte un alias público de módulo que coincida con el nombre del primer identificador. Si lo encuentra, utilice el segundo identificador para buscar un nombre de variable de módulo publicado coincidente en el módulo identificado por el alias público de módulo.
La resolución del nombre de objeto de anclaje que tiene tres identificadores se realiza mediante los pasos siguientes:
  1. Si la cláusula ANCHOR se utiliza en la definición de un objeto de módulo, y si los dos primeros identificadores coinciden con el nombre de esquema y el nombre de módulo de dicho módulo, busque una variable de módulo cuyo nombre coincida con el último identificador.
  2. Si no la ha encontrado y el primer identificador es igual al nombre del servidor actual, busque una tabla o una vista utilizando el segundo identificador como nombre de esquema y el tercer identificador como nombre de tabla o vista.
  3. Si no la ha encontrado y el primer identificador es igual al nombre del servidor actual, busque una variable global utilizando el segundo identificador como nombre de esquema y el tercer identificador como nombre de variable global.
  4. Si no se encuentra y no se ha buscado un módulo en el paso 1, busque una variable de módulo publicada utilizando el primer identificador como nombre de esquema, el segundo identificador como nombre de módulo y, si existe dicho módulo, utilice el tercer identificador para buscar un nombre de variable publicada coincidente en el módulo.