/
webservice-vdb.xml
72 lines (55 loc) · 3.2 KB
/
webservice-vdb.xml
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
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<vdb name="StateServiceVDB" version="1">
<description>Shows how to call StateService Web Services</description>
<!--property name="{http://teiid.org/rest}auto-generate" value="true"/-->
<model name="StateService">
<source name="webservice" translator-name="translator-ws" connection-jndi-name="java:/StateServiceWebSvcSource"/>
</model>
<model name="StateServiceProcedures" type="VIRTUAL">
<metadata type="DDL"><![CDATA[
CREATE VIRTUAL PROCEDURE GetStateInfo_request(IN stateCode string NOT NULL) RETURNS TABLE (xml_out xml)
AS
BEGIN
SELECT XMLELEMENT(NAME "tns:GetStateInfo", XMLNAMESPACES( 'http://www.teiid.org/stateService/' AS tns), XMLELEMENT(NAME "stateCode", stateCode)) AS xml_out;
END
CREATE VIRTUAL PROCEDURE GetStateInfo_response(xml_in xml NOT NULL) RETURNS TABLE (Name varchar(50), Abbreviation varchar(20), Capital varchar(50), YearOfStatehood varchar(20))
AS
BEGIN
SELECT t.* FROM XMLTABLE(XMLNAMESPACES( 'http://www.teiid.org/stateService/' AS ns2), 'ns2:GetStateInfoResponse/StateInfo' PASSING xml_in COLUMNS Name string PATH 'Name/text()', Abbreviation string PATH 'Abbreviation/text()', Capital string PATH 'Capital/text()', YearOfStatehood string PATH 'YearOfStatehood/text()') AS t;
END
CREATE VIRTUAL PROCEDURE GetStateInfo (IN stateCode string NOT NULL, IN endpoint string NOT NULL) RETURNS TABLE (Name varchar(50), Abbreviation varchar(20), Capital varchar(50), YearOfStatehood varchar(20))
AS
BEGIN
DECLARE xml xml_in = (EXEC GetStateInfo_request(stateCode));
DECLARE xml xml_out = (EXEC invoke('SOAP11', null, VARIABLES.xml_in, endpoint, TRUE));
IF (xml_out IS NULL)
BEGIN
RAISE SQLEXCEPTION 'The SOAP Service return null';
END
SELECT t.* FROM TABLE(EXEC GetStateInfo_response(VARIABLES.xml_out)) AS t;
END
CREATE VIRTUAL PROCEDURE GetAllStateInfo_request() RETURNS TABLE (xml_out xml)
AS
BEGIN
SELECT XMLELEMENT(NAME "tns:GetAllStateInfo", XMLNAMESPACES( 'http://www.teiid.org/stateService/' AS tns)) AS xml_out;
END
CREATE VIRTUAL PROCEDURE GetAllStateInfo_response(xml_in xml NOT NULL) RETURNS TABLE (Name varchar(50), Abbreviation varchar(20), Capital varchar(50), YearOfStatehood varchar(20))
AS
BEGIN
SELECT t.* FROM XMLTABLE(XMLNAMESPACES( 'http://www.teiid.org/stateService/' AS ns2), 'ns2:GetAllStateInfoResponse/AllStateInfo' PASSING xml_in COLUMNS Name string PATH 'Name/text()', Abbreviation string PATH 'Abbreviation/text()', Capital string PATH 'Capital/text()', YearOfStatehood string PATH 'YearOfStatehood/text()') AS t;
END
CREATE VIRTUAL PROCEDURE GetAllStateInfo (IN endpoint string NOT NULL) RETURNS TABLE (Name varchar(50), Abbreviation varchar(20), Capital varchar(50), YearOfStatehood varchar(20))
AS
BEGIN
DECLARE xml xml_in = (EXEC GetAllStateInfo_request());
DECLARE xml xml_out = (EXEC invoke('SOAP11', null, VARIABLES.xml_in, endpoint, TRUE));
IF (xml_out IS NULL)
BEGIN
RAISE SQLEXCEPTION 'The SOAP Service return null';
END
SELECT t.* FROM TABLE(EXEC GetAllStateInfo_response(VARIABLES.xml_out)) AS t;
END
]]>
</metadata>
</model>
</vdb>