UPDATE [InvoiceIn] SET [InvoiceFile] = (SELECT * FROM OPENROWSET (BULK 'I:\Desktop\Invoice.pdf', SINGLE_BLOB) AS FileData) WHERE [InvoiceID] = 'II11X0001MFW'
DECLARE @tableName sysname = NULL;
DECLARE @printDepth int = 5;
DECLARE @i nvarchar(4) = N'--> ';
DECLARE @c1 sysname, @c2 sysname, @c3 sysname, @c4 sysname, @c5 sysname;
DECLARE @deleteAction nvarchar(20), @updateAction nvarchar(20), @constraintName sysname;
DECLARE @childColumn sysname, @parentColumn sysname;
SET NOCOUNT ON
DECLARE @Dependencies table(Child sysname, Parent sysname, Pass int, ChildColumn sysname, ParentColumn sysname,
DeleteAction nvarchar(60), UpdateAction nvarchar(60), ConstraintName sysname)
INSERT INTO @Dependencies
SELECT DISTINCT OBJECT_NAME(sys.foreign_keys.parent_object_id), OBJECT_NAME(sys.foreign_keys.referenced_object_id), 0,
COL_NAME(sys.foreign_key_columns.parent_object_id, parent_column_id),
COL_NAME(sys.foreign_key_columns.referenced_object_id, referenced_column_id),
delete_referential_action_desc, update_referential_action_desc, name
FROM sys.foreign_keys INNER JOIN sys.foreign_key_columns ON sys.foreign_keys.object_id = sys.foreign_key_columns.constraint_object_id
WHERE sys.foreign_keys.parent_object_id <> sys.foreign_keys.referenced_object_id ORDER BY 1, 2;
UPDATE @Dependencies SET Pass = 1 WHERE Child NOT IN (SELECT Parent FROM @Dependencies);
DECLARE @loop int = 2;
WHILE @loop < @printDepth
BEGIN
UPDATE @Dependencies SET Pass = @loop
WHERE Pass = 0 AND Parent IN (SELECT Parent FROM @Dependencies AS d1 WHERE Pass = 0 AND NOT EXISTS
(SELECT * FROM @Dependencies AS d2 WHERE d1.Child = d2.Parent AND d2.Pass = 0));
SET @loop = @loop + 1;
END
PRINT N'=== ON DELETE / ON UPDATE children of ' + @tableName + N' ===';
PRINT N'';
SELECT Parent, ParentColumn, Child, ChildColumn, Pass, DeleteAction, UpdateAction, ConstraintName
FROM @Dependencies WHERE Parent = @tableName OR @tableName IS NULL
ORDER BY Parent, Child, ParentColumn, ChildColumn
SELECT @c1 = MIN(Child) FROM @Dependencies WHERE Parent = @tableName
WHILE @c1 IS NOT NULL BEGIN
SELECT @deleteAction = DeleteAction, @updateAction = UpdateAction FROM @Dependencies WHERE Child = @c1 AND Parent = @tableName;
IF @printDepth >=1 PRINT @i + CAST(@deleteAction AS nchar(10)) + N'/ ' + CAST(@updateAction AS nchar(10)) + CAST(@c1 AS nchar(32));
SELECT @c2 = MIN(Child) FROM @Dependencies WHERE Parent = @c1;
WHILE @c2 IS NOT NULL BEGIN
SELECT @deleteAction = DeleteAction, @updateAction = UpdateAction FROM @Dependencies WHERE Child = @c2 AND Parent = @c1;
IF @printDepth >=2 PRINT @i+@i + CAST(@deleteAction AS nchar(10)) + N'/ ' + CAST(@updateAction AS nchar(10)) + CAST(@c1 AS nchar(32));
SELECT @c3 = MIN(Child) FROM @Dependencies WHERE Parent = @c2;
WHILE @c3 IS NOT NULL BEGIN
SELECT @deleteAction = DeleteAction, @updateAction = UpdateAction FROM @Dependencies WHERE Child = @c2 AND Parent = @c1;
IF @printDepth >=2 PRINT @i+@i + CAST(@deleteAction AS nchar(10)) + N'/ ' + CAST(@updateAction AS nchar(10)) + CAST(@c1 AS nchar(32));
SELECT @c4 = MIN(Child) FROM @Dependencies WHERE Parent = @c3;
WHILE @c5 IS NOT NULL BEGIN
SELECT @deleteAction = DeleteAction, @updateAction = UpdateAction FROM @Dependencies WHERE Child = @c2 AND Parent = @c1;
IF @printDepth >=2 PRINT @i+@i + CAST(@deleteAction AS nchar(10)) + N'/ ' + CAST(@updateAction AS nchar(10)) + CAST(@c1 AS nchar(32));
SELECT @c5 = MIN(Child) FROM @Dependencies WHERE Parent = @c4;
WHILE @c5 IS NOT NULL BEGIN
SELECT @deleteAction = DeleteAction, @updateAction = UpdateAction FROM @Dependencies WHERE Child = @c2 AND Parent = @c1;
IF @printDepth >=2 PRINT @i+@i + CAST(@deleteAction AS nchar(10)) + N'/ ' + CAST(@updateAction AS nchar(10)) + CAST(@c1 AS nchar(32));
END;
SELECT @c4 = MIN(Child) FROM @Dependencies WHERE Parent = @c3 AND Child > @c4;
END;
SELECT @c3 = MIN(Child) from @Dependencies where Parent = @c2 AND Child > @c3;
END;
SELECT @c2 = MIN(Child) from @Dependencies where Parent = @c1 AND Child > @c2;
END;
SELECT @c1 = MIN(Child) from @Dependencies where Parent = @tableName AND Child > @c1;
END;
http://vyaskn.tripod.com/differences_between_set_and_select.htm