Как перейти от коротких к длинным именам таблиц в Oracle 12.2, с VARCHAR2 (30) на VARCHAR2 (128)? - PullRequest
0 голосов
/ 27 мая 2018

Начиная с Oracle 12.2, имена таблиц и множество других идентификаторов изменяют свою максимальную длину с VARCHAR2(30) на VARCHAR2(128), как упоминалось здесь .

У нас есть тоннысценарии, хранимые процедуры и таблицы, которые ссылаются на имена таблиц, имена столбцов и т. д., например, для служебных целей (копирование таблиц, удаление разделов и т. д.).

РЕДАКТИРОВАТЬ: их необходимо изменить, чтобы они продолжалиработать, как только появится первое более длинное имя.Я думаю, что это, вероятно, займет некоторое время, так как люди так привыкли к коротким именам, но можно с уверенностью предположить, что это произойдет на каком-то этапе.

Вероятно, правильным будет переход с

CREATE OR REPLACE PROCEDURE myprocedure(pname VARCHAR2) IS 
  tabname VARCHAR2(30);
  colname VARCHAR2(30);
  idxname VARCHAR2(30);
BEGIN
  tabname := pname;
END myprocedure; 
/

до

CREATE OR REPLACE PROCEDURE myprocedure(pname VARCHAR2) IS 
  tabname USER_TABLES.TABLE_NAME%TYPE;
  colname USER_TAB_COLUMNS.COLUMN_NAME%TYPE;
  idxname USER_INDEXES.INDEX_NAME%TYPE;
BEGIN
  tabname := pname;
END myprocedure; 
/

Но что делать с таблицами?Единственная идея, которую я смог найти, это отключенный внешний ключ, но это кажется злым (кроме того, я даже не могу получить права правильно):

CREATE TABLE mytable (
   table_name REFERENCES USER_TABLES(TABLE_NAME) DISABLE
);

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 27 мая 2018
...