Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Oracle]Procedura zmieniająca typy char na varchar2
xyxy
post
Post #1





Grupa: Zarejestrowani
Postów: 60
Pomógł: 1
Dołączył: 22.01.2009

Ostrzeżenie: (0%)
-----


Witam,

Jestem początkującym w Oraclu, mam problem, tworzę procedurę do zmiany typów danych wszystkich kolumn 'TTT' we wszystkich tabelach użytkownika ADM. Poczytałem troche i mam już coś takiego:

  1. CREATE OR REPLACE procedure to_varchar2 IS
  2.  
  3. cursor sql_n IS
  4. SELECT DISTINCT aaa.table_name
  5. FROM sys.all_tab_cols aaa
  6. WHERE aaa.owner='ADM'
  7. AND aaa.column_name='TTT'
  8. AND aaa.data_type = 'CHAR';
  9.  
  10. temp sql_n%ROWTYPE;
  11.  
  12. begin
  13. open sql_n;
  14. loop
  15. FETCH sql_n INTO temp;
  16. exit when sql_n%NOTFOUND;
  17. ALTER TABLE temp.table_name MODIFY TTT varchar2(50);
  18.  
  19. end loop;
  20. close sql_n;
  21. end;


Dlaczego nie mogę wykonać żadnego zapytania po exit when sql_n%NOTFOUND; ?

dostaję błąd, że spodziewał sie tam czegoś innego:

Error(18,5): PLS-00103: Napotkano symbol "ALTER" gdy oczekiwano jednego z następujących: ( begin case declare end exit for goto if loop mod null pragma raise return select update while with <an identifier> <a double-quoted delimited-identifier> <a bind variable> << continue close current delete fetch lock insert open rollback savepoint set sql execute commit forall merge pipe purge Symbol "lock zostało wstawione przed "ALTER" w celu kontynuacji.

Error(18,40): PLS-00103: Napotkano symbol "TTT" gdy oczekiwano jednego z następujących: , in


Edit:

dobra już sobie poradziłem, temat do zamknięcia

  1. EXECUTE IMMEDIATE 'alter table adm.' || temp.table_name || ' modify TTT varchar2(50)';


Ten post edytował xyxy 20.05.2011, 18:18:20
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 20:19