Mechanizm parametrów w większości przypadków śmiało wystarcza do budowania interaktywnych raportów, które potrafią wyciągnąć z serwera odpowiednie dane. Może się jednak zdarzyć, że zechcesz skorzystać z danych wygenerowanych poprzez dynamiczny SQL
Nim zdecydujesz się na to rozwiązanie roważ wszelkie inne metody, gdyż dynamiczny SQL jest narażony na ataki SQL Injection i nie jest rozwiązaniem bezpiecznym.
Załóżmy, że masz zapytanie
SELECT LastName, FirstName, Title
FROM Person.Person
WHERE
no właśnie. Zapytanie skończyło się na WHERE. Chcesz przez dynamiczny SQL podesłać tam różne wartości. Kiedy podeślesz 1=1, to wyświetlą się wszystkie rekordy, a jeżeli podeślesz Title=”Mr.”, to wyświetlą się tylko panowie.
Krok nr 1
Zdefiniuj parametr. Nazwałem go condition i podaj w dostępnych wartościach, co może zawierać:
Krok nr 2:
Otwórz właściwości DataSeta. Zauważ przycisk f(x) obok pola, w którym normalnie umieszczasz zapytanie SQL. Tym razem zdefiniujesz wyrażenie, które zwróci dynamiczny SQL!
Krok 3:
Zdefiniuj wyrażenie. Początek tego wyrażenia to SELECT. Ciąg dalszy to wartość parametru wybrana na stronie przez użytkownika:
Krok 4:
Sprawdź działanie. Kiedy użytkownik na stronie wybierze napis „All titles” do zapytania z kroku 3 zostanie doklejony warunek 1=1. Jeśli wybierzesz „Only Mr” do zapytania dokleimy Title=”Mr.”
Podobne rzeczy pokazujemy na kursach w bit Polska. Zapraszam na szkolenie z SQL Server Reporting Services!