Pokaż wyniki od 1 do 4 z 4
  1. #1
    Obserwator
    Dołączył
    January 08
    Postów
    3
    Siła Reputacji
    0


    Twoja ocena: Yes No

    problem z procedurami sql

    zaczne od pocztku, mam zadanie domowe z sql i nie bardzo sobie radze z niektrymi szczegami i szczerze mwic bdc sab kobietka nie daj sobie rady i chciaabym prosi o pomoc. Baza mniej wicej wyglda tak jak pooniej, przedstawione tabelki itd relacje, i mam napisac procedurki, problem w tym ze jedna ma koniecznie wykorzystywac kursor i oprocz tego dwie maja byc procedurami z wyzwalaczem. nie radz sobie z tym kompletnie. Prosz pomcie dobrzy ludzie, tu si kroi los wiata jakbycie mogli napisa jak to zrobi lub pokaza zrobione i wytumaczyc mi jak si to robi to byabym dozgonnie wdziczna.



    create table PRACOWNICY (
    IDPRACOWNIKA NUMBER(10,0) not null,
    STOPIENNAUKOWY VARCHAR2(20) not null,
    PESEL VARCHAR2(11) not null,
    NRDOW VARCHAR2(9) not null,
    IMIE VARCHAR2(20) not null,
    NAZWISKO VARCHAR2(30) not null,
    PENSJA NUMBER not null,
    ADRES VARCHAR2(50) not null, constraint PRACOWNICY_PK primary key (IDPRACOWNIKA) );

    create table STALIKLIENCI (
    IDKLIENTA NUMBER(10,0) not null,
    RABAT NUMBER(38,0) not null,
    IMIE VARCHAR2(20) not null,
    NAZWISKO VARCHAR2(30) not null,
    ADRES VARCHAR2(50) not null,
    NRDOW VARCHAR2(9) not null,
    PESEL VARCHAR2(11) not null, constraint STALIKLIENCI_PK primary key (IDKLIENTA) );

    create table SPRZEDAZ (
    IDSPRZEDAZY NUMBER(10,0) not null,
    DATASPRZED DATE not null,
    IDLEKU NUMBER(38,0) null,
    IDPRACOWNIKA NUMBER(38,0) null,
    IDKLIENTA NUMBER(38,0) null, constraint SPRZEDAZ_PK primary key (IDSPRZEDAZY) );

    create table DOSTAWY (
    IDDOSTAWY NUMBER(10,0) not null,
    DATAPRZYJ DATE not null,
    IDPRACOWNIKA NUMBER(38,0) null, constraint DOSTAWY_PK primary key (IDDOSTAWY) );

    create table HURTOWNIE (
    IDHURTOWNI NUMBER(10,0) not null,
    NAZWAHURT VARCHAR2(20) not null,
    REGON VARCHAR2(9) not null,
    NIP VARCHAR2(10) not null,
    TEL VARCHAR2(10) not null,
    ADRES VARCHAR2(50) not null, constraint HURTOWNIE_PK primary key (IDHURTOWNI) );

    create table PRODUCENCI (
    IDPRODUCENTA NUMBER(10,0) not null,
    NAZWAPROD VARCHAR2(30) not null,
    REGON VARCHAR2(9) not null,
    NIP VARCHAR2(10) not null,
    TEL VARCHAR2(10) not null,
    ADRES VARCHAR2(50) not null, constraint PRODUCENCI_PK primary key (IDPRODUCENTA) );

    create table LEKI (
    IDLEKU NUMBER(10,0) not null,
    NAZWA VARCHAR2(30) not null,
    CENA NUMBER not null,
    ILOSC NUMBER(38,0) not null,
    IDDOSTAWY NUMBER(38,0) null,
    IDPRODUCENTA NUMBER(38,0) null,
    IDHURTOWNI NUMBER(38,0) null, constraint LEKI_PK primary key (IDLEKU) );

    alter table SPRZEDAZ
    add constraint LEKI_SPRZEDAZ_FK1 foreign key (
    IDLEKU)
    references LEKI (
    IDLEKU);

    alter table SPRZEDAZ
    add constraint PRACOWNICY_SPRZEDAZ_FK1 foreign key (
    IDPRACOWNIKA)
    references PRACOWNICY (
    IDPRACOWNIKA);

    alter table SPRZEDAZ
    add constraint STALIKLIENCI_SPRZEDAZ_FK1 foreign key (
    IDKLIENTA)
    references STALIKLIENCI (
    IDKLIENTA);

    alter table DOSTAWY
    add constraint PRACOWNICY_DOSTAWY_FK1 foreign key (
    IDPRACOWNIKA)
    references PRACOWNICY (
    IDPRACOWNIKA);

    alter table LEKI
    add constraint DOSTAWY_LEKI_FK1 foreign key (
    IDDOSTAWY)
    references DOSTAWY (
    IDDOSTAWY);

    alter table LEKI
    add constraint PRODUCENCI_LEKI_FK1 foreign key (
    IDPRODUCENTA)
    references PRODUCENCI (
    IDPRODUCENTA);

    alter table LEKI
    add constraint HURTOWNIE_LEKI_FK1 foreign key (
    IDHURTOWNI)
    references HURTOWNIE (
    IDHURTOWNI);


    DANE:

    PRACOWNICY
    INSERT INTO PRACOWNICY VALUES (1, 'Magister', 'PESEL123456', 'DOWOS1234', 'Stefan', 'Kaczka', 2500, 'Adres1');
    INSERT INTO PRACOWNICY VALUES (2, 'Inzynier', 'PESEL123457', 'DOWOS1235', 'Kazimierz', 'Batory', 1500, 'Adres2');
    INSERT INTO PRACOWNICY VALUES (3, 'Inzynier', 'PESEL123452', 'DOWOS1231', 'Czeslaw', 'Arbuz', 3000, 'Adres3');
    INSERT INTO PRACOWNICY VALUES (4, 'Magister', 'PESEL123436', 'DOWOS1734', 'Roman', 'Pomietlo', 900, 'Adres4');
    INSERT INTO PRACOWNICY VALUES (5, 'Doktor', 'PESEL333456', 'DOWOS4434', 'Andrzej', 'Kaczmarek', 4000, 'Adres5');

    STALIKLIENCI
    INSERT INTO STALIKLIENCI VALUES (1, 7, 'Agata', 'Kwapisz', 'Baczynskiego 4/18', 'BES123456', 'PESEL123456');
    INSERT INTO STALIKLIENCI VALUES (2, 3, 'Ireana', 'Kaczmarek', 'Oswiecimskich 18', 'WWW123456', 'PESEL993456');
    INSERT INTO STALIKLIENCI VALUES (3, 9, 'Helena', 'Pawlak', 'Marszalkowska 4', 'BBS123456', 'PESEL666656');
    INSERT INTO STALIKLIENCI VALUES (4, 6, 'Andrzej', 'Banaszek', 'Powstancow 9', 'BBS173456', 'PESEL676656');
    INSERT INTO STALIKLIENCI VALUES (5, 7, 'Konrad', 'Gazda', 'Ksizycowa 3', 'BEE123456', 'PESEL123T56');

    HURTOWNIE
    INSERT INTO HURTOWNIE VALUES (1, 'Polfa', '123456789', 'N123456789', '123', 'Adres 1');
    INSERT INTO HURTOWNIE VALUES (2, 'Torfarm', '223456789', 'N122456789', '234', 'Adres 2');
    INSERT INTO HURTOWNIE VALUES (3, 'Cefarm', '666456789', 'N663456789', '666', 'Adres 3');
    INSERT INTO HURTOWNIE VALUES (4, 'Polfarma', '223456789', 'N223456789', '456', 'Adres 4');
    INSERT INTO HURTOWNIE VALUES (5, 'Aptecon', '888456789', 'N888456789', '888', 'Adres 5');

    PRODUCENCI
    INSERT INTO PRODUCENCI VALUES (1, 'Bayer', '123456789', 'N123456789', '123', 'Adres 1');
    INSERT INTO PRODUCENCI VALUES (2, 'Biofarm', '223456789', 'N122456789', '234', 'Adres 2');
    INSERT INTO PRODUCENCI VALUES (3, 'Olimp', '666456789', 'N663456789', '666', 'Adres 3');
    INSERT INTO PRODUCENCI VALUES (4, 'Alfopa', '223456789', 'N223456789', '456', 'Adres 4');
    INSERT INTO PRODUCENCI VALUES (5, 'Blubit', '888456789', 'N888456789', '888', 'Adres 5');

    DOSTAWY
    INSERT INTO DOSTAWY VALUES (1, '12-dec-2007', 1);
    INSERT INTO DOSTAWY VALUES (2, '13-nov-2007', 1);
    INSERT INTO DOSTAWY VALUES (3, '13-dec-2007', 2);
    INSERT INTO DOSTAWY VALUES (4, '22-nov-2007', 3);
    INSERT INTO DOSTAWY VALUES (5, '30-nov-2007', 1);


    LEKI
    INSERT INTO LEKI VALUES (1, 'Supradyn', 12, 5, 1, 2, 3);
    INSERT INTO LEKI VALUES (2, 'Apap', 9, 80, 2, 3, 3);
    INSERT INTO LEKI VALUES (3, 'Stoperan', 20, 17, 2, 4, 1);
    INSERT INTO LEKI VALUES (4, 'Duomox', 22, 9, 2, 2, 2);
    INSERT INTO LEKI VALUES (5, 'Durex', 5, 5, 5, 5, 5);

    SPRZEDAZ
    INSERT INTO SPRZEDAZ VALUES (1, '10-dec-2007', 1, 2, 3);
    INSERT INTO SPRZEDAZ VALUES (2, '9-dec-2007', 2, 2, 2);
    INSERT INTO SPRZEDAZ VALUES (3, '8-dec-2007', 2, 4, 4);
    INSERT INTO SPRZEDAZ VALUES (4, '11-dec-2007', 5, 4, 3);
    INSERT INTO SPRZEDAZ VALUES (5, '12-dec-2007', 4, 5, 1);

  2. #2
    Obserwator
    Dołączył
    April 07
    Postów
    336
    Siła Reputacji
    0


    Twoja ocena: Yes No

    Rozumiem, że to mają być stored procedures? na MsSQL Server?
    Jak byś jeszcze powiedziała, na kiedy musisz o zrobić. Mam dość pracowity tydzień, ale postaram się pomóc... chyba, że ktoś inny będzie miał chwilę czasu wcześniej...

  3. #3
    Obserwator
    Dołączył
    January 08
    Postów
    3
    Siła Reputacji
    0


    Twoja ocena: Yes No

    Mam tydzień czasu na całość a procedurę muszę oddać do północy czyli jak najszybciej to może uda się uprosić prowadzącego o sprawdzenie.

  4. #4
    Obserwator
    Dołączył
    April 07
    Postów
    336
    Siła Reputacji
    0


    Twoja ocena: Yes No

    Cytat Napisał agusia147 Zobacz post
    Mam tydzień czasu na całość a procedurę muszę oddać do północy czyli jak najszybciej to może uda się uprosić prowadzącego o sprawdzenie.
    Przeczytałem wreszcie to, co podesłałaś w pierwszym poście i wychodzi na to, że jest to jednak Oracle. Niestety nie mam Oracla nigdzie dostępnego, więc nie jestem w stanie sprawdzić tego, co piszę. Dlatego muszę się ograniczyć w pomocy do podesłania kilku linków.
    1. zupełne podstawy tworzenia Stored Prcedures:
    http://www.devshed.com/c/a/Oracle/Or...ed-Procedures/
    2. jakaś najprostsza SP wypisana w tutorialu - możesz spróbować na jej podstawie napisać własne dodawanie nowego leku - niech ilość będzie domyślnie 1, a cenę będziesz sprawdzała czy niej jest null, jak jest to wpisz np. 9,95.
    http://www.ics.com/support/docs/dx/1.5/tut6.html
    Spróbuję coś napisać tutaj na sucho:
    Kod:
    CREATE PROCEDURE nowyLek @nazwa varchar2(30), @cena number, @ilosc number(38,0)=1
    AS
    IF @cena IS NULL
    SELECT @cena = 9.95
    INSERT INTO leki (nazwa, cena, ilosc) VALUES (@nazwa,@cena,@ilosc)
    SELECT nazwa, cena, ilosc FROM leki WHERE nazwa = @nazwa
    3. w miarę prosty opis używania kursorów, niestety w przykładach używane są funkcje zamiast stored proc.
    http://www.techonthenet.com/oracle/cursors/
    może przyda się też coś po polsku (choć trochę skrótowe):
    http://www.dbf.pl/faq/oracle_plsql_podstawy.html

    Mam nadzieję, że choć trochę te linki Tobie pomogą.

Informacje o temacie

Users Browsing this Thread

Aktualnie 1 użytkownik(ów) przegląda ten temat. (0 zarejestrowany(ch) oraz 1 gości)

Zakładki

Zakładki

Uprawnienia

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  

Jak czytać DI?

Powered by  
ATMAN EcoSerwer