Aktywne Wpisy

MrMas +91
Moja koleżanka z pracy ma dziecko. Super, gratulacje — ale serio, nie każdy ma obowiązek się tym ekscytować. Ja dzieci nie lubię, bo mnie zwyczajnie wkurzają. Ale ona jakby wzięła sobie za życiową misję pokazanie mi, że ‘bobaski są słodkie’, co chwilę wciskając mi zdjęcia i mówiąc ‘no zobacz jakie cudne’. A mnie w środku skręca. Dla niej to całe życie, spoko — ale ja nie zamierzam zostać samotną matką przed trzydziestką
Niby minęło jakieś półtora roku od mojego rozstania z ostatnią poebuską, ale nie znaczy to, że dziwne akcje mam za sobą.
Te półtora roku temu, gdy już ewidentnie się między nami psuło, to ona była tą, która zrobiła pierwszy krok. Mianowicie oznajmiła mi, że nie wydaje jej się żeby to miało sens, że powinniśmy ograniczyć kontakt, ja na to zapytałem "i co dalej" (w sensie z nami), ona na to się obraziła, że
Te półtora roku temu, gdy już ewidentnie się między nami psuło, to ona była tą, która zrobiła pierwszy krok. Mianowicie oznajmiła mi, że nie wydaje jej się żeby to miało sens, że powinniśmy ograniczyć kontakt, ja na to zapytałem "i co dalej" (w sensie z nami), ona na to się obraziła, że





Mirki,
w ramach procedury odświeżania środowiska testowego, muszę zrobić import danych, o tyle, o ile przez SQL Developera to nie problem, o tyle chciałem zautomatyzować te czynności.
Znalazłem query, które stworzy mi insert-y, niestety NIEBANGLA ORA-00936 i ORA-06512 :( w 31 linijce podobno, tak szukałem, tak analizowałem skrypt, ale nie wiem co jest złe.:
set serveroutput on size 100000
set feedback off
declare
v_table_name varchar2(30) := 'EMP'; -- Your Tablename
v_column_list varchar2(2000);
v_insert_list varchar2(2000);
v_ref_cur_columns varchar2(4000);
v_ref_cur_query varchar2(2000);
v_ref_cur_output varchar2(2000);
v_column_name varchar2(2000);
cursor c1 is select column_name, data_type from user_tab_columns where table_name = v_table_name order by column_id;
refcur sys_refcursor;
begin
for i in c1 loop
v_column_list := v_column_list||','||i.column_name;
if i.data_type = 'NUMBER' then
v_column_name := i.column_name;
elsif i.data_type = 'DATE' then
v_column_name := chr(39)||'to_date('||chr(39)||'||chr(39)'||'||to_char('||i.column_name||','||chr(39)||'dd/mm/yyyy hh:mi:ss'||chr(39)||')||chr(39)||'||chr(39)||', '||chr(39)||'||chr(39)||'||chr(39)||'dd/mm/rrrr hh:mi:ss'||chr(39)||'||chr(39)||'||chr(39)||')'||chr(39);
elsif i.data_type = 'VARCHAR2' then
v_column_name := 'chr(39)||'||i.column_name||'||chr(39)';
end if;
v_ref_cur_columns := v_ref_cur_columns||'||'||chr(39)||','||chr(39)||'||'||v_column_name;
end loop;
v_column_list := ltrim(v_column_list,',');
v_ref_cur_columns := substr(v_ref_cur_columns,8);
v_insert_list := 'INSERT INTO '||v_table_name||' ('||v_column_list||') VALUES ';
v_ref_cur_query := 'SELECT '||v_ref_cur_columns||' FROM '||v_table_name;
open refcur for v_ref_cur_query;
loop
fetch refcur into v_ref_cur_output;
exit when refcur%notfound;
v_ref_cur_output := '('||v_ref_cur_output||');';
v_ref_cur_output := replace(v_ref_cur_output,',,',',null,');
v_ref_cur_output := replace(v_ref_cur_output,'(,','(null,');
v_ref_cur_output := replace(v_ref_cur_output,',,)',',null)');
v_ref_cur_output := replace(v_ref_cur_output,'null,)','null,null)');
v_ref_cur_output := v_insert_list||v_ref_cur_output;
dbms_output.put_line (v_ref_cur_output);
end loop;
end;
/
ORA-00936: Błąd wyrażenia
ORA-00936: Błąd w linii 29
To w której linii pokaże błąd się zmienia, czasem pokazuje 31
Ty masz
vrefcuroutput := vinsertlist||vrefcuroutput;dbmsoutput.putline (vrefcuroutput);
zauważ, że to co opisujesz jest stringiem, który pójdzie na dbms_output
więc, to nei to, te inserty nie są egzekwowane. Mają zostać wyprintowane, do użycia po odświeżeniu bazy.
https://stackoverflow.com/questions/tagged/ORA-00936
PS: W mojej ocenie dobra metoda na odświeżenie testinga danymi z produkcji to:
1. Pełen sync pryz użyci DUPLICATE DATABASE
2. Sync tabel i/lub danych przy użyciu Data Pump (expdp/impdp)
3. Sync tabel i/lub danych przy
a co do tego kodu powyzej to blad obstawiam jest tutaj:
vrefcurcolumns
restore jest robiony za pomocą DUPLICATE DATABASE
Natomiast pewne dane muszę zrzucać przed restorem, dodatkowi userzy aplikacji, ustawienia specyficzne dla środowiska etc. i po restorze