A Microsoft extension to the ANSI SQL language that includes procedural programming, local variables, and various support functions.
UPDATE
I have managed to do this with a function like this
@Job _id int = NULL,
@item_id int = NULL,
@item_letter varchar(10) = NULL,
@item_qty int = NULL,
@description varchar(MAX) = NULL,
@rev _no int = NULL,
@rev _date date = NULL,
@revision_by varchar(MAX) = NULL,
@requested_by varchar(MAX) = NULL,
@approved_by varchar(MAX) = NULL,
@rev _comments varchar(MAX) = NULL,
@tutor varchar(MAX) = NULL
INSERT INTO [dbo].[tbl_MyTable]
SELECT *
FROM [dbo].[tbl_MyTableTemplate]
WHERE [job_id] = @job_id AND [item_id] = @item_id
UPDATE [dbo].[tbl_MyTable]
SET [job_id] = @job_id, [item_id] = @item_id, [item_letter] = @item_letter, [item_qty] = @item_qty, [description] = @description,
[rev_no] = dbo.[GetTheMaxOf(@job_id, @Item_id) + 1,
[revision_by] = @revision_by,
[requested_by] = @requested_by, [approved_by] = @approved_by, [rev_comments] = @rev_comments,
[product] = @Product
WHERE [itemlist_id] = SCOPE_IDENTITY()
with my function like this
ALTER FUNCTION [dbo].[GetTheMaxOf]
(@jobid int, @itemid int) RETURNS int
AS
BEGIN
DECLARE @MaxRev int
SELECT @MaxRev = (SELECT MAX(rev_no) AS MaxOf FROM dbo.tbl_MyTable
GROUP BY job_id, item_id
HAVING (dbo.tbl_MyTable.job_id = @jobid OR @jobid IS NULL) AND (dbo.tbl_MyTable.item_id = @itemid OR @itemid IS NULL))
RETURN @MaxRev
END