· 5 years ago · Nov 24, 2020, 08:48 PM
1create table temp1 (id int identity primary key, Location varchar(4), ItemNo int)
2create table alreadyReturned(id int primary key)
3
4create or alter function fn_a (@id int)
5returns int
6as
7begin
8 declare @sql varchar(4000),
9 @cmd varchar(4000),
10 @retval tinyint
11
12
13 if not exists (select 1 from alreadyReturned where id = @id)
14 begin
15 select @sql = 'insert into alreadyReturned select ' + cast(@id as varchar)
16 select @cmd = 'sqlcmd -S ' +@@SERVERNAME+ ' -d ' +db_name()+ ' -Q "' + @sql +'"'
17 exec master..xp_cmdshell @cmd, 'no_output'
18 set @retval = 1
19 end
20 else set @retval = 0
21
22return @retval
23end
24go
25
26CREATE or alter FUNCTION fn_b(@id AS int)
27 RETURNS TABLE
28 RETURN SELECT 1 AS 'SecureCourierShipments' where dbo.fn_a(@id) = 1
29go
30
31
32CREATE SECURITY POLICY bazmek
33
34ADD FILTER PREDICATE dbo.fn_b(id)
35ON dbo.temp1
36WITH (STATE = ON, Schemabinding = off);
37
38
39