SQL Practice Logo

SQLPractice Online

SQL Server: T-SQL Features: Functions

Module: Database-Specific Features

**Variables**: DECLARE @name TYPE; SET @name = value; or SELECT @name = value FROM table;

**Control Flow**: IF condition BEGIN ... END; WHILE condition BEGIN ... END; CASE WHEN ... THEN ... END;

**Error Handling**: BEGIN TRY ... END TRY BEGIN CATCH ... END CATCH; Use ERROR_MESSAGE(), ERROR_SEVERITY(), ERROR_STATE();

**Procedures**: CREATE PROCEDURE name @param TYPE AS BEGIN ... END; EXEC name @param = value;

**Functions**: CREATE FUNCTION name(@param TYPE) RETURNS TYPE AS BEGIN ... RETURN value; END;

**Temp Tables**: CREATE TABLE #temp (...); or DECLARE @table TABLE (...);

**Advanced**: OUTPUT INSERTED.*, DELETED.* INTO @table; MERGE INTO target USING source ON condition WHEN MATCHED THEN ...;

Variables: DECLARE @name TYPE; SET @name = value; or SELECT @name = value FROM table;

Control flow: IF condition BEGIN ... END; WHILE condition BEGIN ... END; BREAK; CONTINUE;

Error handling: BEGIN TRY ... END TRY BEGIN CATCH ... END CATCH; Use ERROR_MESSAGE(), ERROR_SEVERITY(), ERROR_STATE(), ERROR_LINE();

Procedures: CREATE PROCEDURE name @param TYPE, @output TYPE OUTPUT AS BEGIN ... END; EXEC name @param = value, @output = @var OUTPUT;

Functions: Scalar returns single value, inline table-valued returns table (better performance), multi-statement table-valued materializes results;

Temp tables: #temp (session-scoped, supports indexes), ##temp (global), @table (table variable, no logging);

Advanced: OUTPUT INSERTED.*, DELETED.* INTO @table; MERGE INTO target USING source ON condition WHEN MATCHED/NOT MATCHED THEN ...;

Transactions: BEGIN TRANSACTION; ... COMMIT/ROLLBACK; Check @@TRANCOUNT before rollback;

T-SQL: Variables with @, IF/ELSE/WHILE, TRY/CATCH, stored procedures with OUTPUT parameters, table variables, MERGE, OUTPUT clause, THROW

PL/pgSQL: Variables without @, IF/ELSIF/LOOP, EXCEPTION WHEN, functions return values (no procedures until v11), temporary tables, INSERT...ON CONFLICT, RETURNING clause, RAISE

Stored procedures: Variables with @, IF/ELSEIF/LOOP, DECLARE...HANDLER, procedures with OUT parameters, temporary tables, INSERT...ON DUPLICATE KEY UPDATE, no OUTPUT clause, SIGNAL

PL/SQL: Variables without @, IF/ELSIF/LOOP, EXCEPTION WHEN, procedures and functions, collections (similar to table variables), MERGE, RETURNING clause, RAISE_APPLICATION_ERROR

Core references in this topic include WHERE, =, <, >, <=, >=. Learn what each one does, when to use it, and the execution or engine rules that matter.

WHERE

Filters rows before projection and sorting. It decides which rows continue through the query pipeline.

SELECT ... FROM table WHERE condition;

Most performance issues start with a weak WHERE clause or a missing supporting index.

=

Returns rows where the left and right values are exactly equal.

column = value

Use with exact matches. Do not use = NULL.

<, >, <=, >=

Range comparison operators for less-than, greater-than, and inclusive boundary checks.

salary >= 80000

AND

Requires every condition in the boolean expression to evaluate to TRUE.

condition_a AND condition_b

AND has higher precedence than OR.

IS NULL / IS NOT NULL

Tests whether a value is missing. SQL NULL semantics require dedicated NULL predicates.

manager_id IS NULL

Never use = NULL or != NULL.

LIKE