Masowe tworzenie synonimów

0
  1. Mam (tzn zarządzam bazą) dwóch użytkowników w bazie Oracle (chyba 11gR2). Jeden, nazwijmy go ROOT ma wszelakie prawa, a drugi USER ma tylko te, które są mu niezbędne (tzn USER jest jakąś tam aplikacją). Chcę, żeby USER mógł się odwoływać do tabel ROOTa tak jak do swoich, tzn bez prefiksu "ROOT." Mógłbym ręcznie wyklikać kilkaset synonimów w SQLDeveloperze, ale to by było chore. Ma ktoś pomysł jak to zrobić?

  2. Czy SQLDeveloper pozwala odpalać PL/SQL z palca?

  3. Moim aktualnym pomysłem jest coś w rodzaju:

for table_name in (select table_name from user_tables) loop
create synonym USER.table_name (tu nie wiem jak zrobić, żeby potraktował to jako zmienną, a nie literał) for table_name (tu tak samo);
end loop;

Ale takie coś nijak mi nie chce działać.

Tak w ogóle dodam, że jest to potrzebne do postawienia Project.net na Tomcacie. Możliwe, że da się to ustawić jakoś inaczej, np dałoby się ustawić domyślne prefiksy przy definiowaniu połączenia z bazą danych, ale niestety słabo się znam na tym wszystkim.

1

patent kumpla przydatny właśnie przy takich jednorazowych zabawach (BTW olej SQL Developera bo to ciężka kobyła - zerknij sobie na sql tools)
piszesz zapytanie

SELECT 'create synonym USER.' || table_name || ' for ' ||table_name || ';' FROM user_tables WHERE ...;

potem odpalasz, zaznaczasz wszystko to co dostałeś, nowe okno, CTRL+V, usuwasz pierwszą linię (w sqltoolsie to są nazwy kolumn) i wciskasz F5 - wykonują się po kolei wszystkie zapytania :p

Jest to szybsze i prostsze i szybsze niż pisać procedurę w której będziesz składał zapytanie, jakby nie patrzeć tak samo jak tutaj

1 użytkowników online, w tym zalogowanych: 0, gości: 1