top of page

SQL Syntax

1. Stored procedure

Basic structure:

ALTER PROCEDURE [Procedure name]

AS

SET NOCOUNT ON

BEGIN TRANSACTION

PRINT "Transaction complete"

COMMIT TRANSACTION

Example:

ALTER PROCEDURE Examples.Worker_AddWithAssignment @WorkerName nvarchar(50), @CompanyName nvarchar(50) AS

SET NOCOUNT ON;

DECLARE @NewWorkerId int; IF @WorkerName IS NULL or @CompanyName IS NULL THROW 50000,'Both parameters must be not null',1;

BEGIN TRANSACTION

INSERT INTO Examples.Worker(WorkerName) VALUES (@WorkerName); IF @@ERROR <> 0 BEGIN ROLLBACK TRANSACTION; THROW 50000,'Error occurred inserting data into

Examples.Worker table',1; END; SELECT @NewWorkerId = SCOPE_IDENTITY()

INSERT INTO Examples.WorkerAssignment(WorkerId, CompanyName) VALUES (@NewWorkerId, @CompanyName); IF @@ERROR <> 0 BEGIN ROLLBACK TRANSACTION; THROW 50000, 'Error occurred inserting data into Examples.WorkerAssignment table',1; END; COMMIT TRANSACTION;

 

2. Function

CREATE FUNCTION Examples.ReturnIntValue ( @Value int )

RETURNS int AS BEGIN RETURN @Value END;

Example:

CREATE FUNCTION Sales.Customers_ReturnOrderCount ( @CustomerID int, @OrderDate date = NULL)

RETURNS INT WITH RETURNS NULL ON NULL INPUT, SCHEMABINDING AS BEGIN DECLARE @OutputValue int SELECT @OutputValue = COUNT(*) FROM Sales.Orders WHERE CustomerID = @CustomerID AND (OrderDate = @OrderDate OR @OrderDate IS NULL); RETURN @OutputValue END;

 

3. Trigger

Basic structure:

ALTER TRIGGER [Trigger name]

ON [Table that fires trigger]

AFTER INSERT [or other triggers]

AS

BEGIN

SET NOCOUNT ON

[Trigger content]

END

Example:

CREATE TRIGGER Examples.AccountContact_TriggerAfterDelete

ON Examples.AccountContact

AFTER DELETE AS

BEGIN

SET NOCOUNT ON;

SET ROWCOUNT 0; BEGIN TRY IF EXISTS ( SELECT AccountId FROM Examples.AccountContact WHERE EXISTS (SELECT * FROM deleted WHERE deleted.AccountId = AccountContact.AccountId) GROUP BY AccountId HAVING SUM(CASE WHEN

PrimaryContactFlag = 1 then 1 ELSE 0 END) > 1) THROW 50000, 'One or more Accounts did not have one

primary contact.', 1; END TRY

BEGIN CATCH IF XACT_STATE() <> 0 ROLLBACK TRANSACTION; THROW; END CATCH;

END;

 

4. Extended Events

Basic structure:

CREATE EVENT SESSION [Capture Estimated Plans] ON SERVER

ADD EVENT sqlserver.query_pre_execution_showplan

ADD TARGET package0.event_file(SET filename=N'C:\temp\CaptureEstPlan.xel'),

[WITH (MAX_MEMORY=4MB, MAX_EVENT_SIZE=4MB)];

Alter EVENT SESSION [Capture Estimated Plans] ON SERVER

STATE = START;

Example:

CREATE EVENT SESSION [stored_proc] ON SERVER ADD EVENT sqlserver.sp_statement_completed( ACTION (sqlserver.session_id, sqlserver.sql_text)) ADD TARGET package0.event_file(

SET filename=N'C:\ExamBook762Ch4\query.xel',max_file_size (5),max_rollover_files=(4)), ADD TARGET package0.ring_buffer;

 

Example 1:

Answer 1:

Example 2:

Answer 2:

aboutME

I am John Fan Zhang, a data analyst and finance researcher. I hold a PhD in finance, CFA charter and full membership of CFA New Zealand Society. I have fifteen-year experience in corporate investment and eight-year experience in advanced data analysis. My research focuses on the effect of social psychology (culture) on financial decisions. Finance research involves heaps of data analyses that lead me to the data field. I am a Microsoft Certified Solutions Expert (MCSE): Data Management and Analytics (Excel, Power BI, and SQL). Aside from Excel, Power BI and SQL, I am also familiar with econometric tools such as Stata, Eviews, and MATLAB. I use OX and Python for programming. I am an active data community event participant, volunteer, speaker, moderator, program reviewer, including PASS Marathon 2020, Global AI BootCamp Auckland 2019, SQL Saturday Auckland (2017, 2018, 2019), and Definity Conference (2018, 2019, 2020, Auckland, New Zealand).

Auckland, New Zealand

  • Google Site
  • Twitter
  • LinkedIn

©2016 BY JOHN'S DATA STORY

bottom of page