Print

ExecuteSQL()

Zastosowanie

Funkcja uruchamia zapytanie SQL korzystając z połączenia do wskazanej bazy danych. Pozwala na wymianę danych z systemami zewnętrznymi. Pozwala odczytywać dane z zewnętrznych baz danych (SELECT), aktualizować je (UPDATE), dodawać nowe rekordy (INSERT), a także usuwać (DELETE). Możliwe jest również uruchamianie procedur składowanych.

Składnia

ExecuteSQL(DSN,query);
ExecuteSQL(DSN,query,timeout);
ExecuteSQL(DSN,query,resultType);
ExecuteSQL(DSN,query,resultType,timeout);

Argumenty

  • DSN – (String) skonfigurowane połączenie do źródła danych ODBC, bezpośrednie połączenie do bazy danych (ang. connection string) albo połączenie nazwane;
  • query – (String) polecenie SQL zgodna z silnikiem bazy danych, do której zapytanie się odnosi.  W zapytaniu można odwoływać się do
    • pól systemowych (np. [CaseId],[CaseTitle]),
    • pól z formularza (np. [Data transakcji], [NIP Kontrahenta] itd.),
    • pól z tabel  (np. [Dekretacja.Konto] ),
    • dla słowników przypiętych do pól słownikowych, kiedy słownik jest importowanym słownikiem zewnętrznym, jego zewnętrzny identyfikator (i.e. [Kontrahent.id] itp.);
  • timeout – (String) [opcja] ograniczenie czasu wykonania zapytania do określonej w tym parametrze liczby sekund (domyślnie 30s);
  • resultType – (String) [opcja] określnie typu zwracanego wyniku, a może to być:
    • „scalar” – wartość domyślna, w przypadku zapytania SQL typu SELECT zostanie zwrócona wartość z komórki pierwszego wiersza, pierwszej kolumny. Dla zapytań typu INSERT, UPDATE lub DELETE zostanie zwrócona ilość wierszy, na których z powodzeniem wykonano dane polecenie SQL,
    • „json” – w praktyce do użycia tylko z zapytaniami typu SELECT, zostanie zwrócona cała tabela jako ciąg znaków w formacie JSON.

Zwracana wartość

Zwraca tekst.
Na ogół zwracana jest wartość w pierwszej kolumnie, pierwszego wiersza wyników. Patrz również: opis argumentu resultType.

Przykłady

Przykład 1

W tym przykładzie połączenie z bazą danych odbywa się za pomocą nazwanego połączenia „ELBEDEMO_MYSQL”, skonfigurowanego w ustawieniach systemu AMODIT (patrz: opis poniżej przykładowego kodu). Przy okazji wynik zapytania typu SELECT zostanie zwrócony w formacie JSON. Wartości wynikowe pobierane są w pętli foreachobject().

_json=ExecuteSQL("ELBEDEMO_MYSQL", "select * from Account where id=[Account]","json");
foreachobject(_json)
{
  [Name]=this.Name
  [Address]=this.Address
}
Nazwane połączenie do bazy danych

W systemie AMODIT istnieje możliwość zarządzania nazwanymi połączeniami do baz danych w jednym miejscu. Wykorzystywane są one m.in. we wspomnianej funkcji ExecuteSQL(), słownikach zewnętrznych lub zewnętrznych źródłach danych.

W celu skonfigurowania nazwanego źródła danych należy przejść do ustawień systemowych [1] (na poniższym obrazku), następnie przejść do zakładki „Ustawienia bazy danych” [2] i sekcji „Database Connection Strings” [3]. Kliknąć przycisk „Edit” [4].

Konfigurację nazwanego połączenia „ELBEDEMO_MYSQL” z przykładu nr 4 prezentuje poniższy obrazek.

Przykład 2

W tym przykładzie połączenie do bazy danych jest realizowane za pomocą źródła danych ODBC (ang. DSN – Data Source Name). Połączenie musi być zdefiniowane na serwerze aplikacyjnym systemu AMODIT.

ExecuteSQL("DSN=zebra", "exec AddInvoice [CaseId],[CaseTitle],[Customer.id],[Positions.Price],
[Positions.Product.id]");

Przykład 3

Jak w przykładzie nr 2 również tutaj połączenie z bazą danych odbywa się za pomocą źródła danych ODBC. Dodatkowo została podana wartość 60 (sekund) dla argumentu timeout.

ExecuteSQL("DSN=zebra", "exec AddInvoice [CaseId],[CaseTitle],[Customer.id],[Positions.Price],
[Positions.Product.id]",60);

Przykład 4

W tym przykładzie połączenie do bazy danych MS SQL Server jest realizowane za pomocą bezpośredniego połączenia (ang. connection string) z wykorzystaniem sterownika ODBC. Sterownik można pobrać ze strony https://learn.microsoft.com/en-us/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-ver16.

UWAGA nr 1! Sterownik musi zostać zainstalowany na serwerach, gdzie znajdują się komponenty systemu AMODIT – aplikacja webowa i/lub usługa Windows AMODAsynchronousService. Nie ma potrzeby jego instalacji na serwerze bazy danych, gdzie znajduje się tylko baza systemu AMODIT i nie ma innych komponentów.

ExecuteSQL("Driver={ODBC Driver 18 for SQL Server};Server=myServerAddress;Database=myDataBase;
Uid=myUsername;Pwd=myPassword;","Insert into Invoice (CaseId,CaseTitle,CustomerId,Price,ProductId)
values ([CaseId],[CaseTitle],[Customer.id],[Positions.Price],[Positions.Product.id])");

UWAGA nr 2! W przykładzie tym podajemy, jak można skorzystać z bezpośredniego połączenia do bazy danych z użyciem loginu (UID) i hasła użytkownika (PWD). Ze względów bezpieczeństwa nie jest zalecane, aby te parametry były wpisywane jawnie w kodzie reguł. Dlatego należy korzystać z przykładów 1, 2 lub 3.

Czy artykuł był pomocny?
0 na 5 gwiazdek
5 Stars 0%
4 Stars 0%
3 Stars 0%
2 Stars 0%
1 Stars 0%
5
How can we improve this article?
How Can We Improve This Article?