Dostęp do danych w SQL Server
Dostęp bezpośredni:
Jeśli podczas tworzenia aplikacji zostanie wybrana opcja Zacznij od danych, właściwość Elementy galerii będzie miała formułę Power Fx z nazwą źródła danych, która wskazuje bezpośrednio na tabelę bazy danych.
Jeśli na przykład masz tabelę BOOKLENDING
, zobaczysz następującą formułę:
Search([@'[dbo].[BOOKLENDING]'], SearchInput1.Text, author, author,book_name,category)
Widoki i procedury składowane:
Powszechnym profesjonalnym wzorcem dostępu do danych jest używanie widoków, a następnie procedur składowanych do tworzenia, aktualizowania i usuwania, zamiast zezwalania na bezpośredni dostęp. Jeśli chcesz korzystać z widoków lub procedur składowanych, musisz zmienić przykładową formułę. Podobnie, formularz dla rekordu nie wykorzystuje wbudowanego bezpośredniego podejścia formuły SubmitForm()
.
Wyzwalacze:
Jednym z wzorców baz danych jest używanie wyzwalaczy na tabelach. Jeśli tabela ma wyzwalacz, nie można użyć bezpośredniego wzorca Submit()
do tworzenia, aktualizacji i usuwania. Submit()
ma konflikt między obsługą wyzwalaczy SQL a wbudowanym zachowaniem Power Apps, które używa tego samego parametru wyjściowego.
Można jednak uzyskać bezpośredni dostęp do tabeli na potrzeby zapytań, ale aby obsłużyć Create
Update
lub Delete
należy wywołać procedurę składowaną.
Dodaj źródło danych
Użycie widoku
Wyświetl to zapisane zapytanie, które wyświetla się jako pojedyncza tabela danych.
Widoki pojawiają się na liście tabel, które można wybrać podczas dodawania źródła danych. Widoki obsługują tylko zapytania - nie aktualizacje. Do aktualizacji należy użyć procedury przechowywanej.
Jeśli utworzysz tabelę z opcją Start with data
otrzymasz ekrany i formuły, które wyświetlają rekordy w galerii i formularzu. Widoczne są formuły i funkcje tworzenia, edycji i usuwania. Jeśli jednak użyjesz widoku, zobaczysz tylko ekran wyświetlania galerii i formularza.
Możesz potrzebować automatycznie wygenerowanych ekranów z Start with data
dla widoków.
Dla tej automatycznie wygenerowanej opcji:
- Wybierz
Start with data
z tabelą podstawową. - Usunięcie i zastąpienie źródła danych tabeli.
Przykład:
Na przykład, jeśli posiadasz tabelę BOOKLENDINGVIEW
i dodasz ją jako źródło danych dla Power Apps, formuła może być tak prosta jak:
BOOKLENDINGVIEW
Można również zastąpić inne formuły tworzenia, aktualizacji i usuwania za pomocą źródła danych widoku i wywołań procedur składowanych.
Korzystanie z procedur składowanych
Po dodaniu połączenia SQL Server do aplikacji można dodawać procedury składowane i wywoływać je bezpośrednio w aplikacji. Power Fx.
Uwaga
Ta funkcja działa również z bezpiecznymi niejawnymi połączeniami.
Po wybraniu procedury składowanej pojawi się węzeł podrzędny, w którym można oznaczyć procedurę składowaną jako Bezpieczne do użycia w galeriach i tabelach.
Procedura składowana jest bezpieczna, jeśli nie wykonuje żadnych działań, które mogłyby być niepożądane w niektórych scenariuszach. Na przykład, jeśli procedura składowana zebrała wszystkie konta z danego miasta, a następnie wysłała im wiadomość e-mail. Nie zawsze chcesz, aby wiadomości e-mail były wysyłane za każdym razem, gdy wywoływana jest procedura składowana. Dlatego procedura składowana nie powinna być oznaczona jako bezpieczna.
Sprawdź procedurę składowaną jako bezpieczną tylko wtedy, gdy:
Wywołanie tej procedury na żądanie nie ma żadnych skutków ubocznych.
Powinieneś być w stanie wywołać procedurę wiele razy lub za każdym razem, gdy Power Apps odświeży kontrolkę. W przypadku użycia z właściwością Elementy galerii lub tabeli, Power Apps wywołuje procedurę składowaną za każdym razem, gdy system stwierdzi, że potrzebne jest odświeżenie. Nie można kontrolować, kiedy jest wywoływana procedura składowana.
Procedura składowana zwraca niewielką ilość danych.
Wywołania akcji, takie jak procedury składowane, nie mają limitu liczby pobranych wierszy. Nie są one automatycznie stronicowane w 100 przyrostach rekordów, takich jak tabelaryczne źródła danych, takie jak tabele lub widoki.
Jeśli procedura składowana zwraca zbyt dużo danych (wiele tysięcy rekordów), aplikacja może spowolnić lub ulec awarii. Ze względów wydajnościowych należy wprowadzić mniej niż 2000 rekordów.
Jeśli sprawdzisz procedurę składowaną jako bezpieczną, możesz przypisać ją jako właściwość Elementy w galeriach tabel do użycia w aplikacji.
Ważne
Schemat wartości zwracanych procedury składowanej powinien być statyczny, więc wartości nie zmieniają się od wywołania do wywołania. Na przykład, jeśli procedura składowana zwraca dwie tabele, to zawsze zwraca dwie tabele. Można pracować zarówno z wpisanymi, jak i nie wpisanymi wynikami.
Struktura wyników również musi być statyczna. Na przykład, jeśli schemat wyników jest dynamiczny, wyniki nie są typowane i należy podać typ, aby użyć ich w Power Apps. Aby uzyskać więcej informacji, zobacz Nietypowe wyniki.
Przestrzeń nazw SQL poprzedzona nazwą procedury składowanej
Nazwa przestrzeni nazw SQL Server, w której przechowywana jest procedura, jest dodawana do nazwy procedury przechowywanej. Na przykład wszystkie procedury składowane w przestrzeni nazw 'DBO' SQL Server mają 'dbo' na początku nazwy.
Przykładowo, po dodaniu procedury składowanej w projekcie może pojawić się więcej niż jedno źródło danych.
Wywołanie procedury składowanej
Aby użyć procedury składowanej w Power Apps, należy poprzedzić nazwę procedury składowanej nazwą łącznika z nią związanego, a następnie nazwą procedury składowanej, np. Paruntimedb.dbonewlibrarybook
.
Uwaga
Kiedy Power Apps wprowadza procedurę składowaną, łączy przestrzeń nazw i nazwę procedury, dzięki czemu dbo.newlibrarybook
staje się dbonewlibrarybook
.
Argumenty są przekazywane jako rekord Power Apps z nazwanymi parami wartości:
<datasourceName>.<StoredprocedureName>({<paramName1: value, paramName2: value, ... >})
Porada
Pamiętaj, aby w razie potrzeby przekonwertować wartości podczas przekazywania ich do procedury składowanej, ponieważ odczytujesz je z wartości tekstowej w Power Apps. Na przykład, jeśli aktualizujesz liczbę całkowitą w SQL, musisz przekonwertować tekst w polu za pomocą Value()
.
Oto przykład tego, jak mogą wyglądać procedury składowane po przypisaniu ich do właściwości OnSelect
.
Zmienne i wszystkie procedury składowane
Po zadeklarowaniu bezpiecznego dla interfejsu użytkownika procedury przechowywanej dla właściwości Elementy galerii można uzyskać dostęp do procedury przechowywanej. Odwołanie do nazwy źródła danych i nazwy procedury składowanej, a następnie ResultSets
. Dostęp do wielu wyników można uzyskać, odwołując się do zestawu zwróconych tabel, takich jak Tabela 1, Tabela 2 itp.
Przykładowo, procedura składowana dostępna z tabeli Paruntimedb
o nazwie dbo.spo_show_all_library_books()
wygląda następująco:
Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1
To zapytanie wypełnia galerię rekordami. Procedury składowane są jednak zachowaniami działania w modelu tabelarycznym. Refresh()
działa tylko z tabelarycznymi źródłami danych i nie może być używana z procedurami składowanymi. Galeria musi zostać odświeżona, gdy rekord zostanie utworzony, zaktualizowany lub usunięty.
Uwaga
Kiedy używasz Submit()
na formularzu dla tabelarycznego źródła danych, to efektywnie wywołuje Refresh()
pod maską i aktualizuje galerię.
Użyj zmiennej, aby wypełnić i odświeżyć galerię
Użyj zmiennej we właściwości OnVisible
dla ekranu i ustaw procedurę składowaną na zmienną.
Set(SP_Books, Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1);
Następnie można ustawić właściwość Items
galerii na nazwę zmiennej.
SP_Books
Po utworzeniu, zaktualizowaniu lub usunięciu rekordu za pomocą wywołania procedury składowanej, należy ponownie ustawić zmienną, aby zaktualizować galerię.
Paruntimedb.dbonewlibrarybook({
book_name: DataCardValue3_2.Text,
author: DataCardValue1_2.Text,
...
});
Set(SP_Books, Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1);
Użyj Power Automate do wywoływania procedur składowanych
Power Automate najlepiej radzi sobie z działaniami asynchronicznymi. Procedury składowane można wywoływać jako część serii wywołań w procesie biznesowym.
Aby wywołać Power Automate, a następnie wywołać procedury składowane, należy utworzyć zmienne wejściowe jako część przepływu.
Następnie przekaż zmienne wejściowe do wywołania procedury składowanej.
Dodaj ten przepływ Power Automate do swojej aplikacji i wywołaj go. Opcjonalne argumenty są przekazywane jako rekord „{ ... }”. Poniższy przykład zawiera wszystkie opcjonalne argumenty.