จริงๆ แล้ว เมื่อ parser พบคำที่เป็นชื่อของ built-in function มันต้องตัดสินใจว่าชื่อนั้นแทนการเรียกฟังก์ชัน หรือเป็น non-expression reference ไปยัง identifier เช่น ชื่อตารางหรือคอลัมน์ พิจารณาคำสั่งต่อไปนี้
1. Select sum(salary) from employee; 2. Create table sum (i int);
ในคำสั่งแรก SUM เป็น reference ไปยังการเรียกฟังก์ชัน และในคำสั่งที่สอง มันอ้างอิงถึงชื่อตาราง
Parser ปฏิบัติตามกฎต่อไปนี้เพื่อแยกแยะว่าชื่อของพวกมันถูกใช้เป็นการเรียกฟังก์ชันหรือเป็น identifier ในบริบท non-reference
- กฎ 1 - เพื่อใช้ชื่อเป็นการเรียกฟังก์ชันในนิพจน์ ต้องไม่มี whitespace ระหว่างชื่อและตัวอักษร ( parenthesis ต่อไป
- กฎ 2 - ในทางกลับกัน เพื่อใช้ชื่อฟังก์ชันเป็น identifier มันต้องไม่ได้ตามทันทีโดย parenthesis