-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrequest.sql
More file actions
executable file
·88 lines (58 loc) · 2.06 KB
/
Copy pathrequest.sql
File metadata and controls
executable file
·88 lines (58 loc) · 2.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
concept request;
method 'request.register', interface;
method 'request.setforward', interface;
method 'db.setvar', public;
method 'db.getvar', public;
alter procedure db.setvar (
in @name varchar(128), in @value long varchar, in @type varchar(128) default 'long varchar')
begin
if varexists ( @name ) <> 1 then
execute immediate 'create variable '+@name+' '+@type;
end if;
execute immediate 'set '+@name+'='+if @value is null then 'null' else ''''+@value+'''' endif;
end;
alter function db.getvar (in @name varchar(128))
returns long varchar
begin
declare @result long varchar;
if varexists ( @name ) =1 then
execute immediate 'set @result='+@name;
end if;
return @result;
end;
if not exists (select * from systable where table_name='request' and creator=user_id('request')) then
create table request.request (
id int default autoincrement,
ts datetime default current timestamp,
command varchar(256), data xml, response xml, submit xml, data_put xml,
foreign key ( forward_request ) references request.request,
foreign key ( session_id ) references _session._session,
primary key (id)
);
create view interface.request
as
select * from request.request
;
grant select, update on interface.request to interface;
end if;
alter function request.register (in @command varchar(256), in @data xml default null)
returns int
begin
declare @result int;
insert into request (session_id, data, command)
values (_session_id, @data, @command)
;
set @result=@@identity;
return @result;
end;
alter function request.setforward (in @command varchar(256) default null, in @data xml default null)
returns int
begin
declare @result int;
call sa_set_http_header ('@HTTPSTATUS', '302');
call sa_set_http_header ('Location', if @command is null then '/xml' else '?command='+@command endif);
call db.setvar ('forward_data',@data);
set @result=request.register (@command,@data);
call db.setvar ('forward_request', @result);
return @result;
end;