Witam
Piszę moduł administracyjny dla bazy danych, gdzie ze względów bezpieczeństwa, całe przetwarzanie ma być schowane po stronie serwera, a klient Delphi tylko wywołuje uruchamianie określonych procedur wbudowanych.
Każdy użytkownik ma przydział uprawnień (identyfikacja przez pole "grupa") i dostaje GRAND EXECUTE na zestaw dozwolonych procedur. Chciałbym to zrobić tabelarycznie, czyli tabela "uzytkownicy" (kolumna nick) oraz tabela "procedury" (kolumny nazwa_procedury, grupa). Poniższa procedura powinna więc być wywołana dla wszystkich kombinacji użytkownik - nazwa procedury, dla jego grupy uprawnień.
#========================================= zestaw uprawnień zwykłego usera
DROP PROCEDURE IF EXISTS uprawnienia1_usera//
CREATE PROCEDURE uprawnienia1_usera(
IN sNickG VARCHAR(20),
IN sNazwaProcedury VARCHAR(50))
BEGIN
DECLARE komenda VARCHAR(300);
SET @komenda=CONCAT("GRANT EXECUTE ON PROCEDURE informacje.",@sNazwaProcedury ," TO ",@sNickG) ;
PREPARE stmt1 FROM @komenda;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
END//
delimiter ;
FLUSH PRIVILEGES;
Samo stworzenie listy parametrów jest proste:
SELECT nick, nazwa_procedury FROM uzytkownicy, procedury WHERE procedury.grupa=1
jednak nie wiem, jak teraz kolejne elementy wysyłać do procedury wbudowanej. W Delphi sprawa była by prosta - pętla FOR albo WHILE, ale dla bezpieczeństwa, żadna z tych tabel nie może być przesyłana na zewnątrz, więc przetwarzanie musi się odbyć w SQL po stronie serwera.
Z góry dziękuję za pomoc