Kursory/Wyjątki - problem

Kursory/Wyjątki - problem
J5
  • Rejestracja:prawie 6 lat
  • Ostatnio:ponad 3 lata
  • Postów:28
0

Witam mam oto taki problem ze gdy wpisuje złą nazwę stanowiska to nie wyskakuje mi błąd że Nie istnieje stanowisko o takiej nazwie tylko wyskakuje "pracownicy na stanowisku sdsadsad i nie podaje pracowników bo oczywiście ich nie ma" ,... moglibyście doradzić gdzie mam błąd :/ ??

Kopiuj
DECLARE
    V_STANOWISKO EMPLOYEES.JOB_ID%TYPE:='&NAZWA_STANOWISKA';
CURSOR ZADANIE2 IS
    SELECT LAST_NAME FROM EMPLOYEES
                    WHERE JOB_ID = V_STANOWISKO;
BEGIN
    DBMS_OUTPUT.PUT_LINE('Pracownicy na stanowisku: ' || v_stanowisko);
FOR
V_STANOWISKO IN ZADANIE2
LOOP
IF ZADANIE2%NOTFOUND THEN
    raise_application_error(-20001,'Nie istnieje stanowisko o takiej nazwie ');
    ELSE
        DBMS_OUTPUT.PUT_LINE(V_STANOWISKO.LAST_NAME );
    END IF;
END LOOP;
END;
Kopiuj
edytowany 1x, ostatnio: jelon512
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
2

Skoro kursor jest pusty, wnętrze pętli nie zostaje uruchomione (a zatem i Twój warunek jest pomijany); spróbuj przenieść if zadanie2%notfound przed pętlę.


edytowany 1x, ostatnio: Patryk27
J5
  • Rejestracja:prawie 6 lat
  • Ostatnio:ponad 3 lata
  • Postów:28
0
Patryk27 napisał(a):

Skoro kursor jest pusty, wnętrze pętli nie zostaje uruchomione (a zatem i Twój warunek jest pomijany); spróbuj przenieść if zadanie2%notfound przed pętlę.

kiedy dałem przed pętle to wtedy po else "DBMS_OUTPUT.PUT_LINE(V_STANOWISKO.LAST_NAME );" jest podkreślone na czerwono jakby nie mogło tam być

Kopiuj
IF ZADANIE2%NOTFOUND THEN
FOR
V_STANOWISKO IN ZADANIE2
LOOP
    raise_application_error(-20001,'Nie istnieje departament onazwie ');
    ELSE
        DBMS_OUTPUT.PUT_LINE(V_STANOWISKO.LAST_NAME );
    END IF;
edytowany 2x, ostatnio: jelon512
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

A mógłbyś sformatować ten kod? ;-]


J5
  • Rejestracja:prawie 6 lat
  • Ostatnio:ponad 3 lata
  • Postów:28
0
Patryk27 napisał(a):

A mógłbyś sformatować ten kod? ;-]

Kopiuj
DECLARE
    V_STANOWISKO EMPLOYEES.JOB_ID%TYPE:=UPPER('&NAZWA_STANOWISKA');
CURSOR ZADANIE2 IS
    SELECT LAST_NAME FROM EMPLOYEES
                    WHERE JOB_ID = V_STANOWISKO;
BEGIN
    DBMS_OUTPUT.PUT_LINE('Pracownicy na stanowisku: ' || v_stanowisko);
    IF ZADANIE2%NOTFOUND THEN
FOR
V_STANOWISKO IN ZADANIE2
LOOP
    raise_application_error(-20001,'Nie istnieje stanowisko o takiej nazwie ');
    else
        DBMS_OUTPUT.PUT_LINE(V_STANOWISKO.LAST_NAME );
    END IF;
END LOOP;
END;
Kopiuj
ORA-06550: linia 13, kolumna 5:
PLS-00103: Napotkano symbol "ELSE" 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
   json_exists json_value json_query json_object json_array
ORA-06550: linia 16, kolumna 1:
PLS-00103: Napotkano symbol "END" 
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:
edytowany 2x, ostatnio: jelon512
Patryk27
Zedytowałem post w międzyczasie, gdy zauważyłem, że wrzuciłeś kod - podeślij sformatowaną wersję kodu.
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

Prawie, prawie:

Kopiuj
BEGIN
    DBMS_OUTPUT.PUT_LINE('Pracownicy na stanowisku: ' || v_stanowisko);
    IF ZADANIE2%NOTFOUND THEN
        FOR V_STANOWISKO IN ZADANIE2 LOOP
            raise_application_error(-20001,'Nie istnieje stanowisko o takiej nazwie '); -- jesteś pewien, że chcesz to mieć _wewnątrz_ pętli?
            else -- do czego to się odnosi?
                DBMS_OUTPUT.PUT_LINE(V_STANOWISKO.LAST_NAME );
            END IF; -- do czego to się odnosi?
        END LOOP;
    END; -- dopiero tutaj na prawdę kończy się instrukcja warunkowa
END;

edytowany 4x, ostatnio: Patryk27
J5
  • Rejestracja:prawie 6 lat
  • Ostatnio:ponad 3 lata
  • Postów:28
0
Kopiuj
DECLARE
    V_STANOWISKO EMPLOYEES.JOB_ID%TYPE:=UPPER('&NAZWA_STANOWISKA');
CURSOR ZADANIE2 IS
    SELECT LAST_NAME FROM EMPLOYEES
                    WHERE JOB_ID = V_STANOWISKO;
BEGIN
    DBMS_OUTPUT.PUT_LINE('Pracownicy na stanowisku: ' || v_stanowisko);
    IF ZADANIE2%FOUND THEN
FOR
V_STANOWISKO IN ZADANIE2
LOOP
    DBMS_OUTPUT.PUT_LINE(V_STANOWISKO.LAST_NAME ); 
END LOOP;
END IF;
END;
EXCEPTION WHEN NO_DATA_FOUND
THEN 
raise_application_error(-20001,'Nie istnieje stanowisko o takiej nazwie ');
END;

kombinuje kombinuje ale nadal źle

edytowany 1x, ostatnio: Patryk27
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0
  1. Formatowanie kodu.
  2. Co to znaczy nadal źle? Policja Cię chce aresztować? Komputer Ci wybuchnął? Istotne są wszystkie detale.

edytowany 2x, ostatnio: Patryk27
J5
  • Rejestracja:prawie 6 lat
  • Ostatnio:ponad 3 lata
  • Postów:28
0
Kopiuj
DECLARE
    V_STANOWISKO EMPLOYEES.JOB_ID%TYPE:=UPPER('&NAZWA_STANOWISKA');
CURSOR ZADANIE2 IS
    SELECT LAST_NAME FROM EMPLOYEES
                    WHERE JOB_ID = V_STANOWISKO;
BEGIN
    DBMS_OUTPUT.PUT_LINE('Pracownicy na stanowisku: ' || v_stanowisko);
    IF ZADANIE2%FOUND THEN
FOR
V_STANOWISKO IN ZADANIE2
LOOP
    DBMS_OUTPUT.PUT_LINE(V_STANOWISKO.LAST_NAME ); 
END LOOP;
END IF;
END;
EXCEPTION WHEN NO_DATA_FOUND
THEN 
raise_application_error(-20001,'Nie istnieje stanowisko o takiej nazwie ');
END;
Kopiuj

Error report -
ORA-06550: linia 19, kolumna 6:
PLS-00103: Napotkano symbol "" 
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:
edytowany 2x, ostatnio: Patryk27
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

Nie poprawiłeś formatowania kodu - porównaj wcięcia w Twoim vs moim.


J5
  • Rejestracja:prawie 6 lat
  • Ostatnio:ponad 3 lata
  • Postów:28
0
Kopiuj
DECLARE
    V_STANOWISKO EMPLOYEES.JOB_ID%TYPE:=UPPER('&NAZWA_STANOWISKA');
CURSOR ZADANIE2 IS
    SELECT LAST_NAME FROM EMPLOYEES
                    WHERE JOB_ID = V_STANOWISKO;
BEGIN
        DBMS_OUTPUT.PUT_LINE('Pracownicy na stanowisku: ' || v_stanowisko);
        IF ZADANIE2%FOUND THEN
            FOR V_STANOWISKO IN ZADANIE2 LOOP
            DBMS_OUTPUT.PUT_LINE(V_STANOWISKO.LAST_NAME ); 
        END LOOP;
    END IF;
END;
    EXCEPTION WHEN NO_DATA_FOUND
        THEN 
        raise_application_error(-20001,'Nie istnieje stanowisko o takiej nazwie ');
END;
edytowany 1x, ostatnio: Patryk27
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

No, prawie :-)

Kopiuj
BEGIN
    DBMS_OUTPUT.PUT_LINE('Pracownicy na stanowisku: ' || v_stanowisko);
    IF ZADANIE2%FOUND THEN
        FOR V_STANOWISKO IN ZADANIE2 LOOP
            DBMS_OUTPUT.PUT_LINE(V_STANOWISKO.LAST_NAME ); 
        END LOOP;
    END IF;
END;
EXCEPTION
    WHEN NO_DATA_FOUND THEN 
        raise_application_error(-20001,'Nie istnieje stanowisko o takiej nazwie ');
END;

Teraz dostrzegasz błąd?


edytowany 5x, ostatnio: Patryk27
J5
  • Rejestracja:prawie 6 lat
  • Ostatnio:ponad 3 lata
  • Postów:28
0

błąd teraz wskazuje na linie 17 czyli jak się zaczyna od exception...

Kopiuj
Error report -
ORA-06550: linia 17, kolumna 6:
PLS-00103: Napotkano symbol "" 
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:
edytowany 2x, ostatnio: Patryk27
Patryk27
Forum jest liniowe - nie musisz cytować całego postu, który znajduje się tuż nad Twoim :-)
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0
Kopiuj
BEGIN
  -- /* ... */
END; -- ta instrukcja kończy cały blok (zakańcza `BEGIN`)
EXCEPTION -- .. podczas gdy `EXCEPTION` musi znajdować się jeszcze _wewnątrz_ bloku
  -- /* ... */
END;

Prawidłowo powinno to wyglądać tak:

Kopiuj
BEGIN
  -- /* ... */
EXCEPTION
  -- /* ... */
END;

edytowany 1x, ostatnio: Patryk27
J5
  • Rejestracja:prawie 6 lat
  • Ostatnio:ponad 3 lata
  • Postów:28
0

niestety jak poprawiłem exception przed END wskazuje nadal na ten sam błąd

Kopiuj
ORA-06550: linia 17, kolumna 6:
PLS-00103: Napotkano symbol "" 
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

Ponownie: wrzuć cały kod.


J5
  • Rejestracja:prawie 6 lat
  • Ostatnio:ponad 3 lata
  • Postów:28
0
Kopiuj
DECLARE
    V_STANOWISKO EMPLOYEES.JOB_ID%TYPE:=UPPER('&NAZWA_STANOWISKA');
CURSOR ZADANIE2 IS
    SELECT LAST_NAME FROM EMPLOYEES
                    WHERE JOB_ID = V_STANOWISKO;
BEGIN
        DBMS_OUTPUT.PUT_LINE('Pracownicy na stanowisku: ' || v_stanowisko);
        IF ZADANIE2%FOUND THEN
            FOR V_STANOWISKO IN ZADANIE2 LOOP
            DBMS_OUTPUT.PUT_LINE(V_STANOWISKO.LAST_NAME ); 
        END LOOP;
    END IF;
    EXCEPTION 
        WHEN NO_DATA_FOUND THEN 
            raise_application_error(-20001,'Nie istnieje stanowisko o takiej nazwie');
    END;
END;
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

Wersja z poprawionym formatowaniem:

Kopiuj
BEGIN
    DBMS_OUTPUT.PUT_LINE('Pracownicy na stanowisku: ' || v_stanowisko);
    IF ZADANIE2%FOUND THEN
        FOR V_STANOWISKO IN ZADANIE2 LOOP
            DBMS_OUTPUT.PUT_LINE(V_STANOWISKO.LAST_NAME);
        END LOOP;
    END IF;
EXCEPTION 
    WHEN NO_DATA_FOUND THEN 
        raise_application_error(-20001,'Nie istnieje stanowisko o takiej nazwie');
END;
END; -- do czego odnosi się ten `end`?

edytowany 2x, ostatnio: Patryk27
J5
  • Rejestracja:prawie 6 lat
  • Ostatnio:ponad 3 lata
  • Postów:28
0
Kopiuj
DECLARE
    V_STANOWISKO EMPLOYEES.JOB_ID%TYPE:=UPPER('&NAZWA_STANOWISKA');
CURSOR ZADANIE2 IS
    SELECT LAST_NAME FROM EMPLOYEES
                    WHERE JOB_ID = V_STANOWISKO;
BEGIN
        DBMS_OUTPUT.PUT_LINE('Pracownicy na stanowisku: ' || v_stanowisko);
        IF ZADANIE2%FOUND THEN
            FOR V_STANOWISKO IN ZADANIE2 LOOP
            DBMS_OUTPUT.PUT_LINE(V_STANOWISKO.LAST_NAME ); 
        END LOOP;
    END IF;
 EXCEPTION 
    WHEN NO_DATA_FOUND THEN 
            raise_application_error(-20001,'Nie istnieje stanowisko o takiej nazwie');
END;
Kopiuj
Error report -
ORA-01001: niepoprawny kursor
ORA-06512: przy linia 8
01001. 00000 -  "invalid cursor"
*Cause:    
*Action:
Patryk27
Btw, nadal masz nieprawidłowo sformatowany kod - przyjrzyj się, gdzie masz if oraz end if (hint: powinny być na tej samej szerokości).
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

Nie powinieneś otworzyć kursora przed rozpoczęciem pracy na nim?


edytowany 1x, ostatnio: Patryk27
J5
  • Rejestracja:prawie 6 lat
  • Ostatnio:ponad 3 lata
  • Postów:28
0
Kopiuj
DECLARE
    V_STANOWISKO EMPLOYEES.JOB_ID%TYPE:=UPPER('&NAZWA_STANOWISKA');
CURSOR ZADANIE2 IS
    SELECT LAST_NAME FROM EMPLOYEES
                    WHERE JOB_ID = V_STANOWISKO;
BEGIN
    OPEN ZADANIE2;
        DBMS_OUTPUT.PUT_LINE('Pracownicy na stanowisku: ' || v_stanowisko);
    IF ZADANIE2%FOUND THEN
        FOR V_STANOWISKO IN ZADANIE2 LOOP
        DBMS_OUTPUT.PUT_LINE(V_STANOWISKO.LAST_NAME ); 
        END LOOP;
    END IF;
 EXCEPTION 
    WHEN NO_DATA_FOUND THEN 
            raise_application_error(-20001,'Nie istnieje stanowisko o takiej nazwie');
    CLOSE zadanie2;
END;

jak źle wpisuje to nie wyskakuje błąd a jak dobrze wpisuje to juz nie pokazuje nazwisk pracowników

Kopiuj
Pracownicy na stanowisku: SADSA

Pracownicy na stanowisku: IT_PROG


edytowany 1x, ostatnio: jelon512
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

Hmm - dlaczego tak właściwie myślisz, że w tym wypadku zostanie rzucony wyjątek NO_DATA_FOUND?

Mógłbyś przytoczyć jakiś fragment z dokumentacji, który o tym mówi? :-)


edytowany 2x, ostatnio: Patryk27
J5
  • Rejestracja:prawie 6 lat
  • Ostatnio:ponad 3 lata
  • Postów:28
0

czyli exception trzeba rzucić wyżej?? lub else tam gdzie if i raise_application_error
dopiero sie ucze :D

edytowany 2x, ostatnio: Patryk27
Patryk27
Wydaje mi się, że nie odpowiedziałeś na moje pytanie;
Patryk27
dodatkowo, o co już prosiłem przed chwilą, nie cytuj całego posta znajdującego się tuż nad Twoim
J5
  • Rejestracja:prawie 6 lat
  • Ostatnio:ponad 3 lata
  • Postów:28
0

Sorki....
"SQL zgłasza predefiniowany wyjątek NO_DATA_FOUND, jeśli instrukcja SELECT INTO nie zwraca wierszy." czyli nie ma takiej instrukcji

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

Tak - nie masz tutaj select into, a zatem nie otrzymasz no_data_found :-)

Twoje początkowe podejście było IMO sensowniejsze:

Kopiuj
BEGIN
    OPEN ZADANIE2;

    IF ZADANIE2%NOT_FOUND THEN
        raise_application_error(...);
    END IF;

    DBMS_OUTPUT.PUT_LINE('Pracownicy na stanowisku: ' || v_stanowisko);

    FOR V_STANOWISKO IN ZADANIE2 LOOP
        DBMS_OUTPUT.PUT_LINE(V_STANOWISKO.LAST_NAME);
    END LOOP;
END;

edytowany 2x, ostatnio: Patryk27
J5
  • Rejestracja:prawie 6 lat
  • Ostatnio:ponad 3 lata
  • Postów:28
0
Kopiuj
DECLARE
    V_STANOWISKO EMPLOYEES.JOB_ID%TYPE:=UPPER('&NAZWA_STANOWISKA');
CURSOR ZADANIE2 IS
    SELECT LAST_NAME FROM EMPLOYEES
                    WHERE JOB_ID = V_STANOWISKO;
BEGIN
    OPEN ZADANIE2;
    IF ZADANIE2%NOTFOUND THEN
        raise_application_error(-20001,'Nie istnieje stanowisko o takiej nazwie');
    END IF;
            DBMS_OUTPUT.PUT_LINE('Pracownicy na stanowisku: ' || v_stanowisko);
        FOR V_STANOWISKO IN ZADANIE2 LOOP
            DBMS_OUTPUT.PUT_LINE(V_STANOWISKO.LAST_NAME ); 
        END LOOP;
    CLOSE ZADANIE2;
END;
Kopiuj
ORA-06511: PL/SQL: kursor jest już otwarty
ORA-06512: przy linia 4
ORA-06512: przy linia 12
06511. 00000 -  "PL/SQL: cursor already open"
*Cause:    An attempt was made to open a cursor that was already open.
*Action:   Close cursor first before reopening.
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
1

Nie jestem Oraclo-specem, więc te komunikaty są dla mnie równie nieczytelne - być może for próbuje otworzyć kursor drugi raz; spróbuj zamienić for na klasyczną pętlę z wykorzystaniem fetch.


J5
  • Rejestracja:prawie 6 lat
  • Ostatnio:ponad 3 lata
  • Postów:28
0

w zadaniu mam niestety użyć pętli for :/

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

W takim razie na pałę wrzucone close zadanie2; tuż przed pętlą pewnie wystarczy :-P


J5
  • Rejestracja:prawie 6 lat
  • Ostatnio:ponad 3 lata
  • Postów:28
0
Kopiuj
DECLARE
    V_STANOWISKO EMPLOYEES.JOB_ID%TYPE:=UPPER('&NAZWA_STANOWISKA');
CURSOR ZADANIE2 IS
    SELECT LAST_NAME FROM EMPLOYEES
                    WHERE JOB_ID = V_STANOWISKO;
BEGIN
    OPEN ZADANIE2;
    IF ZADANIE2%NOTFOUND THEN
        raise_application_error(-20001,'Nie istnieje stanowisko o takiej nazwie');
    END IF; 
            DBMS_OUTPUT.PUT_LINE('Pracownicy na stanowisku: ' || v_stanowisko);
    CLOSE ZADANIE2;
        FOR V_STANOWISKO IN ZADANIE2 LOOP
            DBMS_OUTPUT.PUT_LINE(V_STANOWISKO.LAST_NAME ); 
           
        END LOOP;
END;

Jak daję przed for zamknięcie to działa tylko w jedną stronę ( przy podaniu poprawnej nazwy , przy błędnej nie wyskakuje nic oprócz

Kopiuj
Pracownicy na stanowisku: ASDSA

(i tutaj nic ) 

a w oknie output :

Kopiuj
PL/SQL procedure successfully completed.
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)