Skip to content

Instantly share code, notes, and snippets.

@menacestudio
Last active August 29, 2015 14:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save menacestudio/08fdce26e66798eabfe2 to your computer and use it in GitHub Desktop.
Save menacestudio/08fdce26e66798eabfe2 to your computer and use it in GitHub Desktop.
Using a user defined type in SQL.
ALTER PROCEDURE [dbo].[usp_SaveSearch]
@userId INT,
@searchId INT = 0,
@searchName VARCHAR(250) = '',
@searchCriteria dbo.TvpItem readonly
AS
BEGIN
SET NOCOUNT ON;
IF (@searchID = 0)
BEGIN
INSERT INTO SavedSearch ( createdBy, createdOn, isDeleted ) VALUES ( @userId, GETDATE(), 0 )
SET @searchId = SCOPE_IDENTITY()
END
UPDATE dbo.SavedSearch SET searchName=@searchName WHERE searchID=@searchId
-- Sync source and target search criteria
;MERGE dbo.tbl_SavedSearchCriteria AS target
USING ( select @searchId, name, value FROM @searchCriteria ) AS source ( searchId, name, value)
ON target.searchField = source.name AND target.searchID = source.searchId
WHEN MATCHED AND target.searchId = source.searchId THEN
UPDATE SET target.searchValue = source.value
WHEN NOT MATCHED THEN
INSERT ( searchID, searchField, searchValue )
VALUES ( @searchId, source.name, source.value )
WHEN NOT MATCHED BY SOURCE AND target.searchId=@searchId THEN
UPDATE set TARGET.searchValue = '';
select @searchId;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment