The SQLClean package is a standard package for sanitizing SQL. All SQL Statements must be built via this package.
Any extra sanitization functions should be global functions, and should be included in this package. Please route all suggestions to Sean.
Functions
- BuildSQL – Used to Build SQL statements with parameters
- LikeString – Used to build up a string for usage in Like.
BuildSQL Usage
Function BuildSQL Global String sCommand Variant sParam1
Variant sParam2 Variant sParam3 Variant sParam4 Variant sParam5
Variant sParam6 Variant sParam7 Returns String
Call BuildSQL with the parameters indicated in the SQL statement as %1, %2, etc and the parameters passed as extra function parameters. Please note that single quotes are automatically added to strings and dates and should not be part of your SQL statement.
e.g.
Move (BuildSQL("Select * from contact where name = %1", "THE NAME")) to sSQL
If you’re passing a Date, or an integer as a parameter, it must by typecast before being passed to the BuildSQL function.
e.g.
Move (BuildSQL("Select * from contact where order_date= %1", (Date("03/20/2019")))) to sSQL
LikeString Usage
Function LikeString Global String sFront String sInp String sBack String sEscapeChar Returns String
LikeString allows you to create a String for use in a Like statement. It takes the following parameters,
- sFront. Blank if You don’t want to wildcard the front of the statement, “%” otherwise.
- sInp. The text you’ll be searching for.
- sBack. Blank if You don’t want to wildcard the end of the statement, “%” otherwise.
- sEscapeChar. The character to use as an escape character.
Examples
(LikeString("%","END","","/")) ; Search for strings ending with "END" (/ is escape character)
(LikeString("","B","%","/")) ; Search for strings beginning with a "B" (/ is escape character)
(LikeString("","%","%","/")) ; Search for strings beginning with a "%" (/ is escape character)
(LikeString("%","XX","%","/")) ; Search for strings containing "XX" (/ is escape character)
I’m not sure of the interface to this, so if you have suggestions – let me know.