Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Procedury,funkcje
#1
Witam.
Jak w temacie - troche pomyszkowalem i napisalem 1 funkcje i 1 procedure, ale przy ich wywolaniu cos dziwnego zachodzi. Mianowicie mimo zapytania zgodnego z forma czy to funkcji czy procedury nie sa one wykonywane (tj. ciagle klient chce cos jeszcze pobrac). Ponizej zamieszczam kody Wink.
Kod:
DELIMITER $$
DROP FUNCTION IF EXISTS wspolczynnik_poprawnosci;
CREATE FUNCTION wspolczynnik_poprawnosci(odpowiedz INT(1))
RETURNS INT(3)

    BEGIN
    DECLARE i INT(2) DEFAULT 0;
    DECLARE j INT(2) DEFAULT 0;
    DECLARE wynik DECIMAL(3,2) DEFAULT 0;
    DECLARE temp_table INT(2) DEFAULT 0;
    DECLARE temp_table2 INT(2) DEFAULT 0;

    CASE odpowiedz

    WHEN 1 THEN

    INSERT INTO temp_table SELECT(COUNT(rodzaj_odp)) FROM pytany WHERE rodzaj_odp='Tak';
    INSERT INTO i SELECT(COUNT(id_pytanego)) FROM pytany;

    INSERT INTO temp_table2 SELECT(COUNT(rodzaj_odp)) FROM pytany WHERE rodzaj_odp='Tak';
    INSERT INTO j SELECT(COUNT(id_pytanego)) FROM pytany;
    SET wynik = (temp_table/i) * (j/temp_table2);
    

    WHEN 2 THEN

    INSERT INTO temp_table SELECT(COUNT(rodzaj_odp)) FROM pytany WHERE rodzaj_odp='Nie';
    INSERT INTO i SELECT(COUNT(id_pytanego)) FROM pytany;

    INSERT INTO temp_table2 SELECT(COUNT(rodzaj_odp)) FROM pytany WHERE rodzaj_odp='Nie';
    INSERT INTO j SELECT(COUNT(id_pytanego)) FROM pytany;
    SET wynik = (temp_table/i) * (j/temp_table2);


    WHEN 3 THEN

    INSERT INTO temp_table SELECT(COUNT(rodzaj_odp)) FROM pytany WHERE rodzaj_odp='Moze';
    INSERT INTO i SELECT(COUNT(id_pytanego)) FROM pytany;

    INSERT INTO temp_table2 SELECT(COUNT(rodzaj_odp)) FROM pytany WHERE rodzaj_odp='Moze';
    INSERT INTO j SELECT(COUNT(id_pytanego)) FROM pytany;
    SET wynik = (temp_table/i) * (j/temp_table2);
    
    END CASE;

    RETURN (wynik);

END$$

Kod:
DROP PROCEDURE IF EXISTS dodaj_pytanie;

    CREATE PROCEDURE dodaj_pytanie(id INT,odpowiedz VARCHAR(10),tresc VARCHAR(25))
    BEGIN
    INSERT INTO pytania(id_pytania,odpowiedz,tresc) VALUES(id,odpowiedz,tresc);
END$$

Dodatkowo definicje tablic, jezeli to pomoze.
Kod:
DROP TABLE IF EXISTS ankieter;

    CREATE TABLE ankieter
    (
    id_ank INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    imie_ank VARCHAR(15) NOT NULL,
    nazwisko_ank VARCHAR(30) NOT NULL,
    wiek_ank TINYINT UNSIGNED NOT NULL,
    poch_ank VARCHAR(40) NOT NULL,
    stawka_ank DECIMAL(3,2) NOT NULL,
    data_ank DATE NOT NULL,
    godziny_ank INT(3) NOT NULL,
    id_pytania TINYINT UNSIGNED NOT NULL,

    INDEX (id_pytania)
    )
    ENGINE = InnoDB;

DROP TABLE IF EXISTS pytany;

    CREATE TABLE pytany
    (
    id_pytanego TINYINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    imie_pyt VARCHAR(15) NOT NULL,
    nazwisko_pyt VARCHAR(30) NOT NULL,
    wiek_pyt TINYINT UNSIGNED NOT NULL,
    id_pyt TINYINT UNSIGNED NOT NULL,    
    rodzaj_odp VARCHAR(10),

    INDEX (id_pyt),
    INDEX (rodzaj_odp),

    CONSTRAINT pytany__ankieter
     FOREIGN KEY (id_pytanego)
     REFERENCES ankieter(id_pytania)
     ON DELETE NO ACTION
    )
    ENGINE = InnoDB;

DROP TABLE IF EXISTS pytania;

    CREATE TABLE pytania
    (
    id_pytania TINYINT UNSIGNED PRIMARY KEY,
    odpowiedz VARCHAR(10),
    tresc VARCHAR(25),
    
    CONSTRAINT id_pytania__pytany
     FOREIGN KEY (id_pytania)
     REFERENCES pytany(id_pyt),

    CONSTRAINT odpowiedz_rodzaj
     FOREIGN KEY(odpowiedz)
     REFERENCES pytany(rodzaj_odp)
    )
    ENGINE = InnoDB;
Odpowiedz


Podobne wątki…
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
Cool [PHP] wydajność funkcje w pliku camelrafal 25 45,919 02-11-2016, 18:39
Ostatni post: martt4dg
  Funkcje grupujące w Perspektywach krowiak 1 2,763 29-11-2012, 15:46
Ostatni post: Pedro84
  przeniesienie selectow z php do procedury mysql arturaspl 13 11,258 07-04-2012, 19:16
Ostatni post: MOCNY
Question Przekazanie wyników z bazy danych przez funkcję mail atrapa 2 2,798 15-11-2011, 23:16
Ostatni post: atrapa
  [php] funkcje, wybieranie następnych danych domzal 3 3,296 30-09-2011, 14:43
Ostatni post: Pedro84

Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości
Sponsorzy i przyjaciele
SeoHost.pl