Promotic

DbExecute - metoda objektu PmaAdo

Popis:
Provede příkaz zadaný v syntaxi jazyka SQL.
Syntaxe:
Object DbExecute(String sId, String sCommand, String sParams)
Parametry:
sId(String) Jednoznačný identifikátor, pod kterým si objekt PmaAdo zapamatuje výsledná data v podobě objektu AdoRecordset.
Pokud je uveden prázdný řetězec (""), pak se SQL příkaz sice provede a data v podobě objektu AdoRecordset jsou vrácena, ale objekt PmaAdo si je nebude pamatovat. Je to výhodné zejména v případech, kdy ve skriptu je nutno provést SQL dotaz a data ve skriptu ihned zpracovat s tím, že objekt AdoRecordset se ihned poté uvolní.
Prázdný řetězec se také zadává, pokud zadaný příkaz výsledná data vůbec nevrací.
sCommand(String) Obvykle příkaz v syntaxi jazyka SQL (INSERT, UPDATE, DELETE, atd.), který nevrací data v podobě objektu AdoRecordset.
Může ale také také vracet data v podobě objektu AdoRecordset a obsahovat SQL dotaz SELECT, název tabulky, volání uložené procedury, název nebo URL adresa souboru obsahující uložený objekt AdoRecordset.
sParams(String) Dodatečné parametry metody DbExecute. Údaje jsou zde ve formátu KeyVal, například "command:text;execute:norecords;return:map;".
"command:xxx;" (nepovinné) - Určuje, jak má příslušný ADO Provider vyhodnotit parametr sSource, zejména pokud obsahuje něco jiného, než dotaz/příkaz v syntaxi jazyka SQL (např. SELECT, INSERT, atd.).
text (přednastaveno) - Určuje, že ADO Provider má vyhodnotit parametr sSource jako textový zápis příkazu.
Odpovídá hodnotě ADO adCmdText.
table - Určuje, že ADO Provider má vygenerovat SQL dotaz tak, že budou vráceny všechny záznamy databázové tabulky, jejíž název je uvedené v parametru sSource.
Odpovídá hodnotě ADO adCmdTable.
storedproc - Určuje, že ADO Provider má vyhodnotit parametr sSource jako uloženou proceduru.
Odpovídá hodnotě ADO adCmdStoredProc.
file - Určuje, že uložený objekt AdoRecordset má být vyčten ze souboru, jehož název je uvedený v parametru sSource.
Odpovídá hodnotě ADO adCmdFile.
tabledirect - Určuje, že ADO Provider má vrátit všechny záznamy databázové tabulky, jejíž název je uvedené v parametru sSource.
Odpovídá hodnotě ADO adCmdTableDirect.
unknown - Určuje, že typ příkazu v parametru sSource není známý. ADO Provider se ho pokusí zjistit sám, ale spotřebuje se tím zbytečně čas.
Odpovídá hodnotě ADO adCmdUnknown.
"execute:xxx;" (nepovinné) - Určuje, jak má příslušný ADO Provider provést SQL dotaz. Implicitní je synchronní dotaz, to znamená, že metoda čeká na výsledek operace.
async - Asynchronní dotaz, to znamená, že metoda nečeká na výsledek operace.
Odpovídá hodnotě ADO adAsyncExecute.
asyncfetch - Určuje, že řádky určené vlastností ADO Recordset.CacheSize se mají načíst synchronně, a zbývající řádky se mají dočíst asynchronně.
Odpovídá hodnotě ADO adAsyncFetch.
asyncfetchnonblocking - Určuje, že hlavní vlákno (thread) nebude nikdy blokováno při čtení. Pokud požadovaný řádek nebyl načten, pak ukazovátko aktuálního záznamu bude přesunuto na konec.
Odpovídá hodnotě ADO adAsyncFetchNonBlocking.
norecords - Určuje, že volaný dotaz/příkaz nevrací žádná data. Pokud ano, pak data budou zahozena a nebudou vrácena (žádný objekt AdoRecordset = hodnota null pro JavaScript nebo Nothing pro VBScript).
Odpovídá hodnotě ADO adExecuteNoRecords.
record - Určuje, že volaný dotaz/příkaz vrací jeden řádek, který má být vrácen v podobě objektu AdoRecord.
Odpovídá hodnotě ADO adExecuteRecord.
"return:xxx;" (nepovinné) - Určuje, zda vrácená hodnota metody má být mapa s více vrácenými hodnotami současně (nový způsob) nebo jedna hodnota (starý způsob).
Pokud není nastaveno, pak se jedná o starý způsob.
map - Vrací mapu (objekt PmMap), která obsahuje více vrácených hodnot současně (nový způsob) (např. Result, AffectedRows, ErrorCode, ErrorText).
Vrácená hodnota:
Nový způsob: Vrací objekt PmMap s hodnotami v následujících položkách:
- "Result": výsledná data v podobě objektu AdoRecordset nebo v případě chyby hodnota null pro JavaScript nebo Nothing pro VBScript (pokud vůbec daný příkaz data vrací)
- "AffectedRows": Počet dotčených řádků v případě přidání, smazání nebo změně řádků daným příkazem
- "ErrorCode": číselný kód chyby, kde hodnota 0 znamená úspěšné vykonání metody bez chyby
- "ErrorText": text případné chyby


Starý způsob: Vrací výsledná data v podobě objektu AdoRecordset nebo v případě chyby hodnota null pro JavaScript nebo Nothing pro VBScript (pokud vůbec daný příkaz data vrací).
Poznámka:
Objekt ADO Record:
V závislosti na konkrétním ADO Provider se může stát, že jednořádkový výsledek SQL dotazu nebude vrácen v podobě objektu AdoRecordset s jedním záznamem, ale v podobě objektu AdoRecord (představuje jeden řádek). Není to ale typické pro nejběžněji užívané ADO Provider. Objekt AdoRecord je spíše vrácen při explicitních operacích, kdy z existujícího objektu AdoRecordset se vrátí konkrétní záznam v podobě objektu AdoRecord. Objekt AdoRecord se skládá z objektů AdoField stejně jako objekt AdoRecordset, na rozdíl od něj však nepodporuje metody pro přesun pozice aktuálního záznamu (např. MoveFirst).
V dokumentaci PROMOTIC se pro zjednodušení bude uvádět pouze běžnější vracený objekt AdoRecordset, přestože v určitých ojedinělých případech může být vrácen i objekt AdoRecord.
Příklad:
Přidá nový záznam do tabulky ("table1") v objektu PmaAdo ("/TestAdoDb").
JavaScriptVBScriptVyber a zkopíruj do schránky

var oDb = pMe.Pm("/TestAdoDb");
oDb.DbExecute("", "INSERT table1 (name, value) VALUES ('pi', 3.14)", "");

Historie:
Pm8.01.00: Vytvořeno
Pm8.03.22: Vrací objekt PmMap s hodnotami v položkách "Result", "AffectedRows", "ErrorCode" a "ErrorText".
© MICROSYS, spol. s r.o.