Developer reference
Priority Software Developer Cheat Sheet
Fast. Clean. Accurate. Written for real Priority developers.
SQL functions, variables, triggers, procedures, snippets and best practices — ready to copy.
SQL System Functions
Priority exposes built‑in SQL functions prefixed with SQL.. These return system values usable in triggers, procedures, and reports.
SQL.DATE— current date & timeSQL.DATE8— current date onlySQL.TIME— current timeSQL.DAY— weekday numberSQL.USER— internal user IDSQL.ENV— current companySQL.ENVLANG— current company languageSQL.WEBID— current web user id (number)SQL.CLIENTID— current web user id (string)SQL.LINE— row counterSQL.TMPFILE— path to temp fileSQL.GUID— random GUIDSQL.GROUP— current user Group
SELECT SQL.DATE, SQL.USER
INTO :now, :usr
FROM DUMMY;
SQL Variables
Variables begin with : and can be form variables, parameters, or system variables.
:RETVAL— return value of last query:SCRLINE— current form line:PAR1–:PAR3— message parameters:FORM_INTERFACE— 1 when form load is running:FORM_INTERFACE_NAME— the name of the interface (when form load is running):ACTIVATEREFRESHrefresh the form after direct activation run:KEYSTROKES— simulate keyboard actions:SQL.NET— 0 = Windows, 1 = Web:PRINTFORMATcurrent selected print format:SENDOPTIONcurrent selected print option:ISSENDPDFcurrent selected print as pdf:WANTSEDOCUMENTcurrent selected send print by Email:EXTERNAL.VARNAMEget the variable from External winrun
SELECT DOC
FROM DOCUMENTS
WHERE CURDATE >= (SQL.DATE - 24:00 * 3);
:TotalLines = (:RETVAL <= 0 ? 0 : :RETVAL);
String & ODBC Functions
STRCAT(a,b)— concatenateSUBSTR(str,start,len)— substringLENGTH(str)— lengthUPPER()/LOWER()
:first = 'First Text Here ' ;
:last = ' Last Text Here' ;
:full = STRCAT(TOLOWER(:first), ' ---> ',TOUPPER(:last));
output text:
first text here ---> LAST TEXT HERE
File & Execution Functions
COPYFILE(from,to)— copy fileMOVEFILE(from,to)— move fileDELWINDOW 'f', (path)— delete fileEXECUTE(cmd)— run OS commandLINK table TO fileUNLINK table
EXECUTE COPYFILE :TmpFile , '../../system/load/MyTmpFile.txt';
Form Triggers
Triggers run automatically when users interact with forms.
- PRE-FORM
- POST-FORM
- PRE-INSERT
- POST-INSERT
- PRE-UPDATE
- POST-UPDATE
- PRE-DELETE
- POST-DELETE
- PRE-INS-UPD-DEL
- POST-INS-UPD-DEL
Procedures & Step Logic
- SQLI — SQL query
- FORM — open form
- REPORT — run report
- MESSAGE — show message
- INPUT — ask user
- GOTO — jump
SELECT PARTNAME, PRICE
FROM PART
WHERE PRICE > :minprice
FORMAT;
/*- no price higher then :minprice found -*/
GOTO 555 WHERE :RETVAL <= 0 ;
Priority Snippets
Cursor
/* -- Start Cursor -- */
DECLARE MyCursor CURSOR FOR
SELECT ....
OPEN MyCursor;
GOTO 10101 WHERE :RETVAL <= 0 ;
LABEL 10102 ;
FETCH MyCursor INTO .... ;
GOTO 10103 WHERE :RETVAL <= 0;
SELECT ...
LOOP 10102;
LABEL 10103 ;
CLOSE MyCursor ;
LABEL 10101 ;
/* -- End Cursor -- */
Get File Size
/* Example: Get file size using Priority tools */ :FILENAME = 'path/myfile.txt'; /* Create a temporary file to store the result */ SELECT SQL.TMPFILE INTO :tmp FROM DUMMY; LINK STACK TO :tmp; /* Run OS command that writes the size into the linked file */ EXECUTE GETSIZE :FILENAME, :tmp; /* Read the result */ :FILESIZE = 0; SELECT ELEMENT INTO :FILESIZE FROM STACK WHERE ELEMENT > 0; UNLINK STACK;
Get File Date
/* Example: Retrieve file date using Priority tools */
:FILENAME = 'path/myfile.txt';
/* Prepare a temporary file to capture the output */
SELECT SQL.TMPFILE INTO :tmp FROM DUMMY;
LINK STACK TO :tmp;
/* Run OS command that writes the file date into the linked file */
EXECUTE GETDATE :FILENAME, :tmp;
/* Extract the result */
:FILEDATE = 0;
SELECT ELEMENT INTO :FILEDATE
FROM STACK WHERE ELEMENT > 0;
UNLINK STACK;
Adding Table & Column Rules
- Table names: max 20 chars
- Custom tables: 4‑letter prefix
- Custom columns: same prefix
- Column types: CHAR, INT, REAL, DATE, TIME, DAY
- Use autounique keys for joins
Best Practices
- Use autounique keys for relationships
- Never update tables directly — use Form Interface or Linked Table (LINK)
- Use
SQL.LINEfor numbering - Use
SQL.TMPFILEfor exports - Prefix all custom entities consistently