T-SQL (Transact-SQL) is Microsoft’s and Sybase’s extension of the SQL language. It’s used primarily with Microsoft SQL Server for database programming and managing relational databases.
DECLARE @EmployeeID INT = 100;
DECLARE @Salary MONEY;
BEGIN
SELECT @Salary = Salary FROM Employees WHERE EmployeeID = @EmployeeID;
IF @Salary < 5000
BEGIN
UPDATE Employees SET Salary = Salary * 1.1 WHERE EmployeeID = @EmployeeID;
END
END
DECLARE.INT, VARCHAR, MONEY, DATETIME, BIT.DECLARE @count INT = 0;
DECLARE @name VARCHAR(50);
IF @count > 10
PRINT 'Count is greater than 10';
ELSE
PRINT 'Count is 10 or less';
WHILE @count < 10
BEGIN
PRINT @count;
SET @count = @count + 1;
END
DECLARE emp_cursor CURSOR FOR
SELECT EmployeeID, Salary FROM Employees WHERE DepartmentID = 10;
OPEN emp_cursor;
DECLARE @EmployeeID INT, @Salary MONEY;
FETCH NEXT FROM emp_cursor INTO @EmployeeID, @Salary;
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT 'EmployeeID: ' + CAST(@EmployeeID AS VARCHAR) + ', Salary: ' + CAST(@Salary AS VARCHAR);
FETCH NEXT FROM emp_cursor INTO @EmployeeID, @Salary;
END
CLOSE emp_cursor;
DEALLOCATE emp_cursor;
CREATE PROCEDURE IncreaseSalary
@EmpID INT,
@Increment MONEY
AS
BEGIN
UPDATE Employees
SET Salary = Salary + @Increment
WHERE EmployeeID = @EmpID;
END;
EXEC IncreaseSalary @EmpID = 100, @Increment = 500;
CREATE FUNCTION GetEmployeeSalary(@EmpID INT)
RETURNS MONEY
AS
BEGIN
DECLARE @Salary MONEY;
SELECT @Salary = Salary FROM Employees WHERE EmployeeID = @EmpID;
RETURN @Salary;
END;
INSERT, UPDATE, or DELETE events.CREATE TRIGGER trg_CheckSalary
ON Employees
AFTER UPDATE
AS
BEGIN
IF EXISTS (SELECT * FROM inserted WHERE Salary < 0)
BEGIN
RAISERROR ('Salary cannot be negative', 16, 1);
ROLLBACK TRANSACTION;
END
END;
TRY...CATCH blocks to handle runtime errors.BEGIN TRY
-- Code that might cause error
UPDATE Employees SET Salary = -100 WHERE EmployeeID = 1;
END TRY
BEGIN CATCH
PRINT 'Error occurred: ' + ERROR_MESSAGE();
END CATCH;
BEGIN TRANSACTION, COMMIT, and ROLLBACK.BEGIN TRANSACTION;
UPDATE Accounts SET Balance = Balance - 100 WHERE AccountID = 1;
UPDATE Accounts SET Balance = Balance + 100 WHERE AccountID = 2;
COMMIT;
| Feature | Description | Example |
|---|---|---|
| Variables | Declare and use variables | DECLARE @var INT = 10; |
| Control Flow | Conditional and looping logic | IF, WHILE |
| Cursors | Row-by-row processing | DECLARE cursor ... |
| Stored Procedures | Modular reusable code blocks | CREATE PROCEDURE |
| Functions | Return values or tables | CREATE FUNCTION |
| Triggers | Auto-execute on data modifications | CREATE TRIGGER |
| Error Handling | Manage exceptions and errors | TRY...CATCH |
| Transactions | Control atomic units of work | BEGIN TRANSACTION...COMMIT |
Open this section to load past papers