Niby prosty insert na podstawie selekta:
INSERT /*+ APPEND */ SELECT * FROM test;
A w efekcie można uzyskać brzydki błąd. Jego rozwiązanie jest dość banalne.
Wystarczy zapytanie zakomitować:
COMMIT;
Niby prosty insert na podstawie selekta:
INSERT /*+ APPEND */ SELECT * FROM test;
A w efekcie można uzyskać brzydki błąd. Jego rozwiązanie jest dość banalne.
Wystarczy zapytanie zakomitować:
COMMIT;
Duplikowanie linii w której znajduje się kursor:
(tryb komend) yyp
Usuwanie linii w której znajduje się kursor:
(tryb komend) yyd
Wyświetlenie pomocy kontekstowej
(tryb edycji) Ctrl+N
Czasem w czasie procesu testowania stworzonych procedur lub większych zapytań sql pojawia się potrzeba częstego ich testowania. Jednak często oryginalne dane, które mamy przetwarzać są zbyt duże by testy przeprowadzać w trakcie powstawania kodu. Dobrym rozwiązaniem tego problemu jest stworzenie kopi tabel z małą próbką testową orginalnych danych.
Kod stworzenia kopi tabeli, gdzie n jest zadaną ilością wierszy kopiowanych:
create table tablica_kopia as select * from tablica_orginalna where rownum <=n;
Na niektórych hostingach bywa tak, że z pewnych względów poniższy kod nie zadziała, a wskutek tego np ckeditor też poprawnie nie będzie interpretowała tworzonych linków.
php_flag magic_quotes_gpc Off
Rozwiązanie problemu okazało się banalne:
SetEnv MAGIC_QUOTES 0
Kilka dni temu zacząłem się trochę więcej bawić z bazą danych Oracle i od razu napotkałem klika niespodzianek
Oto jedna z nich. Pisałem funkcje składowaną, która po wykonaniu jakiś zapytań na bazie i sprawdzeniu kilku warunków miała zwrócić true lube false, a z racji że PL/SQL udostępnia cudowny typ BOOLEAN to zapragnąłem własnie z niego skorzystać.
create or replace function czy_spelnione_wymagania( pesel IN varchar2, temat IN varchar2) return boolean is ....
Funkcja się skompilowała poprawnie, więc cały szczęśliwy chciałem ją przetestować korzystając z zabawnej tablicy DUAL.
SELECT czy_spelnione_wymagania('8089123243','Oaza Nowego Zycia 1') FROM DUAL;
I tu mnie spotkało niemiłe zaskoczenie:
ORA-06552: PL/SQL: Statement ignored ORA-06553: PLS-382: expression is of wrong type
Zasięgnąłem informacji o błędzie i byłem dość zaskoczony tym co było przyczyną. A mianowicie poczciwy SQL nie obsługuje udostępnianego przez PL/SQL typu BOOLEAN! Więc trzeba to obejść jakoś ładnie i poniżej przedstawiam moją propozycje rozwiązania tego problemu za pomocą bloku PL/SQL.
DECLARE VAR_BOOL BOOLEAN; BEGIN VAR_BOOL :=czy_spelnione_wymagania(); IF( VAR_BOOL = TRUE ) THEN DBMS_OUTPUT.PUT_LINE( ‘TRUE’ ); END IF; END;
Tak więc nie jesteśmy zmuszeniu do modyfikacji formatu zwracanych danych przez naszą funkcje składowaną, ale oczywiście jak ktoś bardzo lubi to może sobie przyjąć, że będzie zwracał int, gdzie FALSE = 0 a TRUE = 1.