SQL commando uitvoeren

Met deze actie kunt u een of meerdere SQL-commando uitvoeren op een database, gebruik makend van een ODBC- of OLEDB-connectie. Veel gebruikte SQL-commando's zijn bijvoorbeeld "INSERT" en "UPDATE".

Beschrijving parameters

Omschrijving (optioneel)

Uitleg voor deze parameter vind u hier.

Type connectie

Hier geeft u aan welk type database-connectie u wilt gebruiken voor het uitvoeren van het SQL-commando. U heeft de keuze uit ODBC of OLEDB.

Connectiestring (verplicht)

Hier geeft u de database connectiestring op voor ODBC of OLEDB (afhankelijk van wat u bij de parameter Type connectie heeft gekozen). Deze connectiestring kunt u helemaal zelf invoeren of laten samenstellen via het venster Wijzigen/aanmaken connectiestring ODBC of Wijzigen/aanmaken connectiestring OLEDB, via de knop .


NB: Aangezien u een SQL-commando gebruikt om aanpassingen in een database door te voeren, dient u een ODBC- of OLEDB-connectie te gebruiken waarmee u schrijfrechten heeft op de database.

SQL commando (verplicht)

Het SQL-commando welke u wilt uitvoeren.


Voorbeeld

UPDATE

   Invoice

SET

   Total = Total * 0.90

WHERE

   InvoiceID = 17


Het is eveneens mogelijk om zogenaamde BLOB-velden te vullen middels een insert/update SQL opdracht. Voeg voor de waarde van het BLOB-veld de parameterwaarde 'BlobFile:' in.


Voorbeeld

INSERT INTO Documents (Title, PdfDocument)

VALUES ('Invoice 1234', 'BlobFile:C:\Invoices\Invoice 1234.PDF')

Transactie

U kunt met deze actie ook een transactie uitvoeren. Een transactie is de uitvoer van één of meerdere SQL-commando's tegelijkertijd. Het gebruik van een transactie heeft 2 belangrijke voordelen:


  • Een transactie is (veel) sneller dan losse SQL-commando's
  • Indien 1 SQL-commando in de transactie fout gaat, zullen alle wijzigingen van de andere SQL-commando's worden teruggedraaid. Met andere woorden, het is alles of niets.


U geeft een transactie eenvoudig op door meerdere SQL-commando's achter elkaar te plaatsen, gescheiden door een puntkomma (;).


Voorbeeld

UPDATE Artikelen SET Omschrijving = 'Fiets' WHERE Artikelcode = 'Gazelle' ;

INSERT Factuur (Nummer, Bedrag) VALUES ('20152055', 1200.95)


Het maakt hierbij niet uit waar de puntkomma wordt geplaatst. Bovenstaand voorbeeld mag dus ook als volgt worden genoteerd:


UPDATE Artikelen

SET Omschrijving = 'Fiets'

WHERE Artikelcode = 'Gazelle'

;

INSERT Factuur (Nummer, Bedrag)

VALUES ('20152055', 1200.95)


Het laatste SQL-commando mag afgesloten worden door een puntkomma, maar dit is niet verplicht.

SQL commando time out

Hiermee bepaalt u hoeveel seconden er gewacht mag worden op antwoord van de database. Indien u een zwaar SQL-commando laat uitvoeren, kan het voorkomen dat de database lange tijd nodig heeft om deze te verwerken. Het kan ook zijn dat er enige tijd nodig is, omdat op dat moment bijvoorbeeld de databaseserver druk bezig is met het afhandelen van verzoeken van andere gebruikers.


Indien het antwoord van de database langer op zich laat wachten dan het door u opgegeven aantal seconden, zal er een time-out foutmelding worden gegenereerd. U kunt hier maximaal 9.999 seconden opgeven.


Indien u niets opgeeft, zal er standaard 60 seconden worden gewacht.

Plaats aantal gewijzigde regels in dit geheugenveld

Indien u een SQL-commando uitvoert op een databasetabel, dan worden er een aantal records gewijzigd, verwijderd of toegevoegd. De database zal als resultaat het aantal betrokken records teruggeven. Indien u dit aantal wilt gebruiken in het verdere verloop van de taak, dan kunt u hiervoor een geheugenveld opgeven, waarin het resultaat dan zal worden geplaatst.


NB: U kunt alleen kiezen uit een geheugenveld die het type Tekst of Numeriek hebben.

Genereer foutmelding en annuleer wijzigingen indien het aantal gewijzigde records niet gelijk is aan

Indien u een SQL-commando uitvoert op een databasetabel, dan worden er een aantal records gewijzigd, verwijderd of toegevoegd. De database zal als resultaat het aantal betrokken records teruggeven. Vaak weet u vooraf hoeveel records dit zouden moeten zijn.


Voorbeeld


  • U voegt, middels een "INSERT" commando een factuur toe aan de tabel "Invoice". Een factuur bestaat, logisch gezien, uit 1 record, dus het aantal in het SQL-commando betrokken records zou 1 moeten zijn.
  • U wijzigt, middels een "UPDATE", de status van alle factuurregels van een factuur waarvan u vooraf weet dat deze 4 factuurregels bevat. Het aantal in het SQL-commando betrokken records zou dan ook 4 moeten zijn.


Indien u vooraf zeker weet hoeveel records er gewijzigd zouden moeten (of mogen) worden, dan kunt u deze optie gebruiken om daarop te laten controleren en een foutmelding laten genereren indien het door u opgegeven aantal niet gelijk is met hetgeen de database aangeeft. Indien het aantal gewijzigde records niet gelijk is aan het opgegeven aantal, dan zal de wijziging in de database worden teruggedraaid. Dit wordt ook wel een rollback genoemd.


U geeft hier een numeriek getal op.


NB: Het is voor de werking van deze optie niet nodig om ook de parameter Plaats aantal gewijzigde regels in dit geheugenveld ingevuld te hebben.

Transactie

Deze optie is eveneens van toepassing op transacties. Indien het aantal gewijzigde records van alle SQL-commando's binnen de transactie niet gelijk is aan het opgegeven aantal, zal een foutmelding worden gegenereerd. De gehele transactie wordt in dat geval dan ook niet uitgevoerd.

Actie bij fout

Uitleg voor deze parameter vind u hier.