| Procedural (Basic, C++, Cobol, etc.) | Declarative (SQL) |
| Most work done by interpreter of the languages | Most work done by Data Engine within the DBMS |
| Many lines of code to perform a task | One SQL statement to perform task |
| Programmer must be skilled in translating the objective into lines of procedural code | Programmer must be skilled in clearly stating the objective as a SQL statement |
| Requires minimum of management around the actual data | Relies on sophisticated, SQL-enabled DBMS to hold the data and execute the SQL statement against the data |
| Programmer understands and has access to each step of the code | Programmer has no interaction with the execution of the SQL statement |
| Data exposed to programmer during execution of the code | Programmer receives data at end as an entire set |
| More susceptible to failure due to changes in the data structure | More resistant to changes in the data structure |
| Traditionally faster, but that is changing | Originally slower, but now setting speed records |
| Code of procedure tightly linked to front end | Same SQL statements will work with most front ends Code loosely linked to front end. |
| Code tightly integrated with structure of the datastore | Code loosely linked to structure of data; DBMS handles structural issues |
| Programmer works with a pointer or cursor | Programmer not concerned with positioning |
| Knowledge of coding tricks applies only to one language | Knowledge of SQL tricks applies to any language using SQL |