Pregunta

En primer lugar

Soy un novato oráculo, y no tengo un gurú oráculo local para ayudarme.

Aquí está mi problema / pregunta

Tengo algunas secuencias de comandos SQL que tienen que ser puesto en libertad a un número de instancias de Oracle. Los scripts crean procedimientos almacenados.
El esquema en el que se crean los procedimientos almacenados es diferente del esquema que contiene las tablas de las cuales están leyendo los procedimientos almacenados.

En los diferentes casos, el esquema que contiene las tablas tiene diferentes nombres.

Obviamente, yo no quiero tener que editar las secuencias de comandos para hacerlos a medida para diferentes casos.

Se ha sugerido a mí que la solución puede ser la creación de sinónimos.

¿Es posible definir un sinónimo para el esquema de la tabla en cada caso, y utilizar el sinónimo en mis guiones?

¿Hay otras maneras de hacer este trabajo sin editar las secuencias de comandos cada vez?

Gracias por cualquier ayuda que usted.

¿Fue útil?

Solución

Sería útil saber qué versión de Oracle, pero a partir de 10 g - no, no se puede hacer un sinónimo de un esquema
. Puede crear sinónimos de las mesas, lo que permitiría que no se especifica el esquema en los guiones. Pero significa que los sinónimos tienen que ser idénticos en todos los casos a ser de alguna utilidad ...

La otra opción sería la de sustituir las referencias de esquema con las variables, por lo que cuando se ejecuta el script se solicita al usuario de los nombres de esquema. Yo prefiero este enfoque, porque es menos trabajo. He aquí un ejemplo que trabajaría en SQLPlus:

CREATE OR REPLACE &schema1..vw_my_view AS
  SELECT *
    FROM &&schema2..some_other_table

La belleza de esto es que la persona que ejecuta el script sólo se le pide una vez para cada variable, no cada vez que se encuentra la variable. Así que tener cuidado con los errores tipográficos:)

Otros consejos

Sí, se puede crear un sinónimo de esquema.

select ksppinm, ksppstvl from x$ksppi a, x$ksppsv b where a.indx=b.indx and ksppinm like '%schema%synonym%'
ALTER SYSTEM SET  "_enable_schema_synonyms" = true SCOPE=SPFILE;
STARTUP FORCE
show parameter synonym

Asumiendo que ya tiene un esquema denominado ORA ...

CREATE SCHEMA SYNONYM  ORASYN for ORA;   -- create synonym for schema
CREATE TABLE ORASYN.TAB1(id number(10)); -- create table in schema

Más información aquí: http: // Oracle -network.com/database/how-to-create-synonym-for-a-schema/

Sí, hay una manera oculta para crear un sinónimo de esquema.

Hay una _enable_schema_synonyms parámetro oculto. Es falsa por defecto, pero se puede establecer en true y crear un sinónimo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top