web_plsql 0.3.2 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.editorconfig +8 -8
- package/.eslintignore +3 -3
- package/.eslintrc.js +347 -273
- package/CHANGELOG.md +127 -106
- package/LICENSE +21 -21
- package/README.md +165 -164
- package/examples/apex.js +70 -70
- package/examples/credentials.js +22 -22
- package/examples/oracledb_example.js +30 -30
- package/examples/sample.js +101 -84
- package/examples/sql/doc_table.sql +13 -13
- package/examples/sql/install.sql +31 -31
- package/examples/sql/sample.pkb +223 -223
- package/examples/sql/sample.pks +24 -24
- package/examples/sql/uninstall.sql +5 -5
- package/examples/static/sample.css +25 -25
- package/jest.config.js +204 -0
- package/package.json +85 -109
- package/src/cgi.ts +95 -95
- package/src/config.ts +97 -97
- package/src/errorPage.ts +286 -286
- package/src/fileUpload.ts +126 -132
- package/src/index.ts +65 -66
- package/src/page.ts +275 -277
- package/src/procedure.ts +360 -359
- package/src/procedureError.ts +27 -27
- package/src/request.ts +139 -139
- package/src/requestError.ts +19 -19
- package/src/stream.ts +26 -26
- package/src/trace.ts +194 -193
- package/test/.eslintrc.json +5 -5
- package/test/{cgi.ts → __tests__/cgi.ts} +96 -95
- package/test/{config.ts → __tests__/config.ts} +41 -41
- package/test/__tests__/errorPage.ts +101 -0
- package/test/{oracledb_mock.ts → __tests__/oracledb_mock.ts} +98 -98
- package/test/{server.ts → __tests__/server.ts} +495 -498
- package/test/{stream.ts → __tests__/stream.ts} +21 -21
- package/test/mock/oracledb.ts +85 -85
- package/test/static/static.html +1 -1
- package/tsconfig.json +24 -23
- package/tsconfig.src.json +23 -22
- package/test/errorPage.ts +0 -101
- package/test/mocha.opts +0 -7
- package/tsconfig.test.json +0 -19
package/examples/sql/sample.pkb
CHANGED
|
@@ -1,223 +1,223 @@
|
|
|
1
|
-
CREATE OR REPLACE
|
|
2
|
-
PACKAGE BODY sample IS
|
|
3
|
-
|
|
4
|
-
PROCEDURE openPage(title IN VARCHAR2);
|
|
5
|
-
PROCEDURE closePage;
|
|
6
|
-
|
|
7
|
-
FUNCTION emptyArray RETURN vc_arr
|
|
8
|
-
IS
|
|
9
|
-
arr vc_arr;
|
|
10
|
-
BEGIN
|
|
11
|
-
RETURN arr;
|
|
12
|
-
END emptyArray;
|
|
13
|
-
|
|
14
|
-
PROCEDURE pageIndex(p IN VARCHAR2 DEFAULT NULL)
|
|
15
|
-
IS
|
|
16
|
-
BEGIN
|
|
17
|
-
openPage('web_plsql - Index Page');
|
|
18
|
-
htp.p('<ul>');
|
|
19
|
-
htp.p('<li><a href="sample.pageSimple?text=some-text">Simple page</a></li>');
|
|
20
|
-
htp.p('<li><a href="sample.pageArray?text=some-text'||CHR(38)||'text=more-text'||CHR(38)||'text=last-text">Array passing</a></li>');
|
|
21
|
-
htp.p('<li><a href="!sample.pageFlexible?p1=v1'||CHR(38)||'p2=v2'||CHR(38)||'p3=v3.1'||CHR(38)||'p3=v3.2"">Flexible parameter passing</a></li>');
|
|
22
|
-
htp.p('<li><a href="sample.pageCGI">CGI</a></li>');
|
|
23
|
-
htp.p('<li><a href="sample.pageCookie">Cookies</a></li>');
|
|
24
|
-
htp.p('<li><a href="sample.pageForm">Form</a></li>');
|
|
25
|
-
htp.p('<li><a href="sample.pageFileUpload">File upload</a></li>');
|
|
26
|
-
htp.p('<li><a href="sample.pageRedirect">Redirect</a></li>');
|
|
27
|
-
htp.p('<li><a href="sample.pageLocation">Change location</a></li>');
|
|
28
|
-
htp.p('<li><a href="myalias">pathAlias configuration setting</a></li>');
|
|
29
|
-
htp.p('</ul>');
|
|
30
|
-
closePage();
|
|
31
|
-
END pageIndex;
|
|
32
|
-
|
|
33
|
-
PROCEDURE pageSimple(text IN VARCHAR2 DEFAULT NULL)
|
|
34
|
-
IS
|
|
35
|
-
BEGIN
|
|
36
|
-
openPage('web_plsql - Simple page');
|
|
37
|
-
htp.p('<p>'||text||'</p>');
|
|
38
|
-
closePage();
|
|
39
|
-
END pageSimple;
|
|
40
|
-
|
|
41
|
-
PROCEDURE pageArray(text IN vc_arr)
|
|
42
|
-
IS
|
|
43
|
-
BEGIN
|
|
44
|
-
openPage('web_plsql - Array parameter passing');
|
|
45
|
-
htp.p('<table>');
|
|
46
|
-
htp.p('<tr><th>value</th></tr>');
|
|
47
|
-
FOR i IN 1 .. text.COUNT LOOP
|
|
48
|
-
htp.p('<tr><td>'||text(i)||'</td></tr>');
|
|
49
|
-
END LOOP;
|
|
50
|
-
htp.p('</table>');
|
|
51
|
-
closePage();
|
|
52
|
-
END pageArray;
|
|
53
|
-
|
|
54
|
-
PROCEDURE pageFlexible(name_array IN owa.vc_arr, value_array IN owa.vc_arr)
|
|
55
|
-
IS
|
|
56
|
-
BEGIN
|
|
57
|
-
openPage('web_plsql - Flexible parameter passing');
|
|
58
|
-
htp.p('<table>');
|
|
59
|
-
htp.p('<tr><th>name</th><th>value</th></tr>');
|
|
60
|
-
FOR i IN 1 .. name_array.COUNT LOOP
|
|
61
|
-
htp.p('<tr><td>'||name_array(i)||'</td><td>'||value_array(i)||'</td></tr>');
|
|
62
|
-
END LOOP;
|
|
63
|
-
htp.p('</table>');
|
|
64
|
-
closePage();
|
|
65
|
-
END pageFlexible;
|
|
66
|
-
|
|
67
|
-
PROCEDURE pageCGI
|
|
68
|
-
IS
|
|
69
|
-
BEGIN
|
|
70
|
-
openPage('web_plsql - CGI');
|
|
71
|
-
htp.p('<table>');
|
|
72
|
-
htp.p('<tr><th>name</th><th>value</th></tr>');
|
|
73
|
-
FOR i IN 1 .. owa.num_cgi_vars LOOP
|
|
74
|
-
htp.p('<tr><td>'||owa.cgi_var_name(i)||'</td><td>'||owa.cgi_var_val(i)||'</td></tr>');
|
|
75
|
-
END LOOP;
|
|
76
|
-
htp.p('</table>');
|
|
77
|
-
closePage();
|
|
78
|
-
END pageCGI;
|
|
79
|
-
|
|
80
|
-
PROCEDURE pageCookie
|
|
81
|
-
IS
|
|
82
|
-
names owa_cookie.vc_arr;
|
|
83
|
-
vals owa_cookie.vc_arr;
|
|
84
|
-
num_vals INTEGER;
|
|
85
|
-
BEGIN
|
|
86
|
-
owa_cookie.get_all(names=>names, vals=>vals, num_vals=>num_vals);
|
|
87
|
-
|
|
88
|
-
owa_util.mime_header('text/html', FALSE);
|
|
89
|
-
owa_cookie.send('demoCookie', TO_CHAR(SYSDATE, 'YYYY.MM.DD HH24:MI:SS'));
|
|
90
|
-
owa_util.http_header_close;
|
|
91
|
-
|
|
92
|
-
openPage('web_plsql - Cookies');
|
|
93
|
-
htp.p('<table>');
|
|
94
|
-
htp.p('<tr><th>name</th><th>value</th></tr>');
|
|
95
|
-
FOR i IN 1 .. num_vals LOOP
|
|
96
|
-
htp.p('<tr><td>'||names(i)||'</td><td>'||vals(i)||'</td></tr>');
|
|
97
|
-
END LOOP;
|
|
98
|
-
htp.p('</table>');
|
|
99
|
-
closePage();
|
|
100
|
-
END pageCookie;
|
|
101
|
-
|
|
102
|
-
PROCEDURE pageForm
|
|
103
|
-
IS
|
|
104
|
-
BEGIN
|
|
105
|
-
openPage('web_plsql - Form');
|
|
106
|
-
htp.p('<form method="POST" action="sample.pageFormProcess">');
|
|
107
|
-
htp.p('<table>');
|
|
108
|
-
htp.p('<tr><td>First name:</td><td><input type="text" name="firstname"></td></tr>');
|
|
109
|
-
htp.p('<tr><td>Last name:</td><td><input type="text" name="lastname"></td></tr>');
|
|
110
|
-
htp.p('<tr><td>Age:</td><td><input type="text" name="age"></td></tr>');
|
|
111
|
-
htp.p('<tr><td colspan="2"><input type="radio" name="sex" value="male">Male</td></tr>');
|
|
112
|
-
htp.p('<tr><td colspan="2"><input type="radio" name="sex" value="female">Female</td></tr>');
|
|
113
|
-
htp.p('<tr><td colspan="2"><input type="checkbox" name="vehicle" value="Bike">I have a bike</td></tr>');
|
|
114
|
-
htp.p('<tr><td colspan="2"><input type="checkbox" name="vehicle" value="Car">I have a car </td></tr>');
|
|
115
|
-
htp.p('<tr><td colspan="2"><input type="submit" value="Submit"></td></tr>');
|
|
116
|
-
htp.p('</table>');
|
|
117
|
-
htp.p('</form>');
|
|
118
|
-
closePage();
|
|
119
|
-
END pageForm;
|
|
120
|
-
|
|
121
|
-
PROCEDURE pageFormProcess(firstname IN VARCHAR2 DEFAULT NULL, lastname IN VARCHAR2 DEFAULT NULL, age IN VARCHAR2 DEFAULT NULL, sex IN VARCHAR2 DEFAULT NULL, vehicle IN vc_arr DEFAULT emptyArray)
|
|
122
|
-
IS
|
|
123
|
-
PROCEDURE line(name IN VARCHAR2, value IN VARCHAR2)
|
|
124
|
-
IS
|
|
125
|
-
BEGIN
|
|
126
|
-
htp.p('<tr><th>'||name||'</th><td>'||value||'</td></tr>');
|
|
127
|
-
END line;
|
|
128
|
-
BEGIN
|
|
129
|
-
openPage('web_plsql - Form processed');
|
|
130
|
-
htp.p('<table>');
|
|
131
|
-
line('firstname', firstname);
|
|
132
|
-
line('lastname', lastname);
|
|
133
|
-
line('age', age);
|
|
134
|
-
line('sex', sex);
|
|
135
|
-
FOR i IN 1 .. vehicle.COUNT LOOP
|
|
136
|
-
line('vehicle '||i, vehicle(i));
|
|
137
|
-
END LOOP;
|
|
138
|
-
htp.p('</table>');
|
|
139
|
-
closePage();
|
|
140
|
-
END pageFormProcess;
|
|
141
|
-
|
|
142
|
-
PROCEDURE pageFileUpload
|
|
143
|
-
IS
|
|
144
|
-
BEGIN
|
|
145
|
-
openPage('web_plsql - File upload');
|
|
146
|
-
htp.p('<form enctype="multipart/form-data" method="POST" action="!sample.pageFileUploaded">');
|
|
147
|
-
htp.p('<p>File 1: <input type="file" name="file1" /></p>');
|
|
148
|
-
htp.p('<p>File 2: <input type="file" name="file2" /></p>');
|
|
149
|
-
htp.p('<p>File 3: <input type="file" name="file3" /></p>');
|
|
150
|
-
htp.p('<p><input type="submit" name="submit" value"Upload" /></p>');
|
|
151
|
-
htp.p('</form>');
|
|
152
|
-
closePage();
|
|
153
|
-
END pageFileUpload;
|
|
154
|
-
|
|
155
|
-
PROCEDURE pageFileUploaded(name_array IN owa.vc_arr, value_array IN owa.vc_arr)
|
|
156
|
-
IS
|
|
157
|
-
BEGIN
|
|
158
|
-
openPage('web_plsql - File uploaded');
|
|
159
|
-
htp.p('<table>');
|
|
160
|
-
htp.p('<tr><th>name</th><th>value</th></tr>');
|
|
161
|
-
FOR i IN 1 .. name_array.COUNT LOOP
|
|
162
|
-
htp.p('<tr><td>'||name_array(i)||'</td><td>'||value_array(i)||'</td></tr>');
|
|
163
|
-
END LOOP;
|
|
164
|
-
htp.p('</table>');
|
|
165
|
-
closePage();
|
|
166
|
-
END pageFileUploaded;
|
|
167
|
-
|
|
168
|
-
PROCEDURE pageRedirect
|
|
169
|
-
IS
|
|
170
|
-
BEGIN
|
|
171
|
-
owa_util.mime_header('text/html', FALSE);
|
|
172
|
-
owa_cookie.send('fromPage', 'sample.pageRedirect');
|
|
173
|
-
owa_util.redirect_url(curl=>'sample.pageOther', bclose_header=>FALSE);
|
|
174
|
-
owa_util.http_header_close;
|
|
175
|
-
END pageRedirect;
|
|
176
|
-
|
|
177
|
-
PROCEDURE pageLocation
|
|
178
|
-
IS
|
|
179
|
-
BEGIN
|
|
180
|
-
openPage('web_plsql - pageLocation');
|
|
181
|
-
htp.p('<script>self.top.location.replace("sample.pageOther");</script>');
|
|
182
|
-
closePage();
|
|
183
|
-
END pageLocation;
|
|
184
|
-
|
|
185
|
-
PROCEDURE pageOther
|
|
186
|
-
IS
|
|
187
|
-
BEGIN
|
|
188
|
-
openPage('web_plsql - Other page');
|
|
189
|
-
closePage();
|
|
190
|
-
END pageOther;
|
|
191
|
-
|
|
192
|
-
PROCEDURE pagePathAlias(p_path IN VARCHAR2)
|
|
193
|
-
IS
|
|
194
|
-
BEGIN
|
|
195
|
-
openPage('web_plsql - pathAlias page');
|
|
196
|
-
htp.p('<p>p_path: "'||p_path||'"</p>');
|
|
197
|
-
closePage();
|
|
198
|
-
END pagePathAlias;
|
|
199
|
-
|
|
200
|
-
PROCEDURE openPage(title IN VARCHAR2)
|
|
201
|
-
IS
|
|
202
|
-
BEGIN
|
|
203
|
-
htp.p('<!DOCTYPE html>');
|
|
204
|
-
htp.p('<html>');
|
|
205
|
-
htp.p('<head>');
|
|
206
|
-
htp.p('<title>'||title||'</title>');
|
|
207
|
-
htp.p('<meta charset="utf-8">');
|
|
208
|
-
htp.p('<link rel="stylesheet" type="text/css" href="/static/sample.css" />');
|
|
209
|
-
htp.p('</head>');
|
|
210
|
-
htp.p('<body>');
|
|
211
|
-
htp.p('<h1>'||title||'</h1>');
|
|
212
|
-
htp.p('<p><a href="sample.pageIndex">Menu</a></p>');
|
|
213
|
-
END openPage;
|
|
214
|
-
|
|
215
|
-
PROCEDURE closePage
|
|
216
|
-
IS
|
|
217
|
-
BEGIN
|
|
218
|
-
htp.p('</body>');
|
|
219
|
-
htp.p('</html>');
|
|
220
|
-
END closePage;
|
|
221
|
-
|
|
222
|
-
END sample;
|
|
223
|
-
/
|
|
1
|
+
CREATE OR REPLACE
|
|
2
|
+
PACKAGE BODY sample IS
|
|
3
|
+
|
|
4
|
+
PROCEDURE openPage(title IN VARCHAR2);
|
|
5
|
+
PROCEDURE closePage;
|
|
6
|
+
|
|
7
|
+
FUNCTION emptyArray RETURN vc_arr
|
|
8
|
+
IS
|
|
9
|
+
arr vc_arr;
|
|
10
|
+
BEGIN
|
|
11
|
+
RETURN arr;
|
|
12
|
+
END emptyArray;
|
|
13
|
+
|
|
14
|
+
PROCEDURE pageIndex(p IN VARCHAR2 DEFAULT NULL)
|
|
15
|
+
IS
|
|
16
|
+
BEGIN
|
|
17
|
+
openPage('web_plsql - Index Page');
|
|
18
|
+
htp.p('<ul>');
|
|
19
|
+
htp.p('<li><a href="sample.pageSimple?text=some-text">Simple page</a></li>');
|
|
20
|
+
htp.p('<li><a href="sample.pageArray?text=some-text'||CHR(38)||'text=more-text'||CHR(38)||'text=last-text">Array passing</a></li>');
|
|
21
|
+
htp.p('<li><a href="!sample.pageFlexible?p1=v1'||CHR(38)||'p2=v2'||CHR(38)||'p3=v3.1'||CHR(38)||'p3=v3.2"">Flexible parameter passing</a></li>');
|
|
22
|
+
htp.p('<li><a href="sample.pageCGI">CGI</a></li>');
|
|
23
|
+
htp.p('<li><a href="sample.pageCookie">Cookies</a></li>');
|
|
24
|
+
htp.p('<li><a href="sample.pageForm">Form</a></li>');
|
|
25
|
+
htp.p('<li><a href="sample.pageFileUpload">File upload</a></li>');
|
|
26
|
+
htp.p('<li><a href="sample.pageRedirect">Redirect</a></li>');
|
|
27
|
+
htp.p('<li><a href="sample.pageLocation">Change location</a></li>');
|
|
28
|
+
htp.p('<li><a href="myalias">pathAlias configuration setting</a></li>');
|
|
29
|
+
htp.p('</ul>');
|
|
30
|
+
closePage();
|
|
31
|
+
END pageIndex;
|
|
32
|
+
|
|
33
|
+
PROCEDURE pageSimple(text IN VARCHAR2 DEFAULT NULL)
|
|
34
|
+
IS
|
|
35
|
+
BEGIN
|
|
36
|
+
openPage('web_plsql - Simple page');
|
|
37
|
+
htp.p('<p>'||text||'</p>');
|
|
38
|
+
closePage();
|
|
39
|
+
END pageSimple;
|
|
40
|
+
|
|
41
|
+
PROCEDURE pageArray(text IN vc_arr)
|
|
42
|
+
IS
|
|
43
|
+
BEGIN
|
|
44
|
+
openPage('web_plsql - Array parameter passing');
|
|
45
|
+
htp.p('<table>');
|
|
46
|
+
htp.p('<tr><th>value</th></tr>');
|
|
47
|
+
FOR i IN 1 .. text.COUNT LOOP
|
|
48
|
+
htp.p('<tr><td>'||text(i)||'</td></tr>');
|
|
49
|
+
END LOOP;
|
|
50
|
+
htp.p('</table>');
|
|
51
|
+
closePage();
|
|
52
|
+
END pageArray;
|
|
53
|
+
|
|
54
|
+
PROCEDURE pageFlexible(name_array IN owa.vc_arr, value_array IN owa.vc_arr)
|
|
55
|
+
IS
|
|
56
|
+
BEGIN
|
|
57
|
+
openPage('web_plsql - Flexible parameter passing');
|
|
58
|
+
htp.p('<table>');
|
|
59
|
+
htp.p('<tr><th>name</th><th>value</th></tr>');
|
|
60
|
+
FOR i IN 1 .. name_array.COUNT LOOP
|
|
61
|
+
htp.p('<tr><td>'||name_array(i)||'</td><td>'||value_array(i)||'</td></tr>');
|
|
62
|
+
END LOOP;
|
|
63
|
+
htp.p('</table>');
|
|
64
|
+
closePage();
|
|
65
|
+
END pageFlexible;
|
|
66
|
+
|
|
67
|
+
PROCEDURE pageCGI
|
|
68
|
+
IS
|
|
69
|
+
BEGIN
|
|
70
|
+
openPage('web_plsql - CGI');
|
|
71
|
+
htp.p('<table>');
|
|
72
|
+
htp.p('<tr><th>name</th><th>value</th></tr>');
|
|
73
|
+
FOR i IN 1 .. owa.num_cgi_vars LOOP
|
|
74
|
+
htp.p('<tr><td>'||owa.cgi_var_name(i)||'</td><td>'||owa.cgi_var_val(i)||'</td></tr>');
|
|
75
|
+
END LOOP;
|
|
76
|
+
htp.p('</table>');
|
|
77
|
+
closePage();
|
|
78
|
+
END pageCGI;
|
|
79
|
+
|
|
80
|
+
PROCEDURE pageCookie
|
|
81
|
+
IS
|
|
82
|
+
names owa_cookie.vc_arr;
|
|
83
|
+
vals owa_cookie.vc_arr;
|
|
84
|
+
num_vals INTEGER;
|
|
85
|
+
BEGIN
|
|
86
|
+
owa_cookie.get_all(names=>names, vals=>vals, num_vals=>num_vals);
|
|
87
|
+
|
|
88
|
+
owa_util.mime_header('text/html', FALSE);
|
|
89
|
+
owa_cookie.send('demoCookie', TO_CHAR(SYSDATE, 'YYYY.MM.DD HH24:MI:SS'));
|
|
90
|
+
owa_util.http_header_close;
|
|
91
|
+
|
|
92
|
+
openPage('web_plsql - Cookies');
|
|
93
|
+
htp.p('<table>');
|
|
94
|
+
htp.p('<tr><th>name</th><th>value</th></tr>');
|
|
95
|
+
FOR i IN 1 .. num_vals LOOP
|
|
96
|
+
htp.p('<tr><td>'||names(i)||'</td><td>'||vals(i)||'</td></tr>');
|
|
97
|
+
END LOOP;
|
|
98
|
+
htp.p('</table>');
|
|
99
|
+
closePage();
|
|
100
|
+
END pageCookie;
|
|
101
|
+
|
|
102
|
+
PROCEDURE pageForm
|
|
103
|
+
IS
|
|
104
|
+
BEGIN
|
|
105
|
+
openPage('web_plsql - Form');
|
|
106
|
+
htp.p('<form method="POST" action="sample.pageFormProcess">');
|
|
107
|
+
htp.p('<table>');
|
|
108
|
+
htp.p('<tr><td>First name:</td><td><input type="text" name="firstname"></td></tr>');
|
|
109
|
+
htp.p('<tr><td>Last name:</td><td><input type="text" name="lastname"></td></tr>');
|
|
110
|
+
htp.p('<tr><td>Age:</td><td><input type="text" name="age"></td></tr>');
|
|
111
|
+
htp.p('<tr><td colspan="2"><input type="radio" name="sex" value="male">Male</td></tr>');
|
|
112
|
+
htp.p('<tr><td colspan="2"><input type="radio" name="sex" value="female">Female</td></tr>');
|
|
113
|
+
htp.p('<tr><td colspan="2"><input type="checkbox" name="vehicle" value="Bike">I have a bike</td></tr>');
|
|
114
|
+
htp.p('<tr><td colspan="2"><input type="checkbox" name="vehicle" value="Car">I have a car </td></tr>');
|
|
115
|
+
htp.p('<tr><td colspan="2"><input type="submit" value="Submit"></td></tr>');
|
|
116
|
+
htp.p('</table>');
|
|
117
|
+
htp.p('</form>');
|
|
118
|
+
closePage();
|
|
119
|
+
END pageForm;
|
|
120
|
+
|
|
121
|
+
PROCEDURE pageFormProcess(firstname IN VARCHAR2 DEFAULT NULL, lastname IN VARCHAR2 DEFAULT NULL, age IN VARCHAR2 DEFAULT NULL, sex IN VARCHAR2 DEFAULT NULL, vehicle IN vc_arr DEFAULT emptyArray)
|
|
122
|
+
IS
|
|
123
|
+
PROCEDURE line(name IN VARCHAR2, value IN VARCHAR2)
|
|
124
|
+
IS
|
|
125
|
+
BEGIN
|
|
126
|
+
htp.p('<tr><th>'||name||'</th><td>'||value||'</td></tr>');
|
|
127
|
+
END line;
|
|
128
|
+
BEGIN
|
|
129
|
+
openPage('web_plsql - Form processed');
|
|
130
|
+
htp.p('<table>');
|
|
131
|
+
line('firstname', firstname);
|
|
132
|
+
line('lastname', lastname);
|
|
133
|
+
line('age', age);
|
|
134
|
+
line('sex', sex);
|
|
135
|
+
FOR i IN 1 .. vehicle.COUNT LOOP
|
|
136
|
+
line('vehicle '||i, vehicle(i));
|
|
137
|
+
END LOOP;
|
|
138
|
+
htp.p('</table>');
|
|
139
|
+
closePage();
|
|
140
|
+
END pageFormProcess;
|
|
141
|
+
|
|
142
|
+
PROCEDURE pageFileUpload
|
|
143
|
+
IS
|
|
144
|
+
BEGIN
|
|
145
|
+
openPage('web_plsql - File upload');
|
|
146
|
+
htp.p('<form enctype="multipart/form-data" method="POST" action="!sample.pageFileUploaded">');
|
|
147
|
+
htp.p('<p>File 1: <input type="file" name="file1" /></p>');
|
|
148
|
+
htp.p('<p>File 2: <input type="file" name="file2" /></p>');
|
|
149
|
+
htp.p('<p>File 3: <input type="file" name="file3" /></p>');
|
|
150
|
+
htp.p('<p><input type="submit" name="submit" value"Upload" /></p>');
|
|
151
|
+
htp.p('</form>');
|
|
152
|
+
closePage();
|
|
153
|
+
END pageFileUpload;
|
|
154
|
+
|
|
155
|
+
PROCEDURE pageFileUploaded(name_array IN owa.vc_arr, value_array IN owa.vc_arr)
|
|
156
|
+
IS
|
|
157
|
+
BEGIN
|
|
158
|
+
openPage('web_plsql - File uploaded');
|
|
159
|
+
htp.p('<table>');
|
|
160
|
+
htp.p('<tr><th>name</th><th>value</th></tr>');
|
|
161
|
+
FOR i IN 1 .. name_array.COUNT LOOP
|
|
162
|
+
htp.p('<tr><td>'||name_array(i)||'</td><td>'||value_array(i)||'</td></tr>');
|
|
163
|
+
END LOOP;
|
|
164
|
+
htp.p('</table>');
|
|
165
|
+
closePage();
|
|
166
|
+
END pageFileUploaded;
|
|
167
|
+
|
|
168
|
+
PROCEDURE pageRedirect
|
|
169
|
+
IS
|
|
170
|
+
BEGIN
|
|
171
|
+
owa_util.mime_header('text/html', FALSE);
|
|
172
|
+
owa_cookie.send('fromPage', 'sample.pageRedirect');
|
|
173
|
+
owa_util.redirect_url(curl=>'sample.pageOther', bclose_header=>FALSE);
|
|
174
|
+
owa_util.http_header_close;
|
|
175
|
+
END pageRedirect;
|
|
176
|
+
|
|
177
|
+
PROCEDURE pageLocation
|
|
178
|
+
IS
|
|
179
|
+
BEGIN
|
|
180
|
+
openPage('web_plsql - pageLocation');
|
|
181
|
+
htp.p('<script>self.top.location.replace("sample.pageOther");</script>');
|
|
182
|
+
closePage();
|
|
183
|
+
END pageLocation;
|
|
184
|
+
|
|
185
|
+
PROCEDURE pageOther
|
|
186
|
+
IS
|
|
187
|
+
BEGIN
|
|
188
|
+
openPage('web_plsql - Other page');
|
|
189
|
+
closePage();
|
|
190
|
+
END pageOther;
|
|
191
|
+
|
|
192
|
+
PROCEDURE pagePathAlias(p_path IN VARCHAR2)
|
|
193
|
+
IS
|
|
194
|
+
BEGIN
|
|
195
|
+
openPage('web_plsql - pathAlias page');
|
|
196
|
+
htp.p('<p>p_path: "'||p_path||'"</p>');
|
|
197
|
+
closePage();
|
|
198
|
+
END pagePathAlias;
|
|
199
|
+
|
|
200
|
+
PROCEDURE openPage(title IN VARCHAR2)
|
|
201
|
+
IS
|
|
202
|
+
BEGIN
|
|
203
|
+
htp.p('<!DOCTYPE html>');
|
|
204
|
+
htp.p('<html>');
|
|
205
|
+
htp.p('<head>');
|
|
206
|
+
htp.p('<title>'||title||'</title>');
|
|
207
|
+
htp.p('<meta charset="utf-8">');
|
|
208
|
+
htp.p('<link rel="stylesheet" type="text/css" href="/static/sample.css" />');
|
|
209
|
+
htp.p('</head>');
|
|
210
|
+
htp.p('<body>');
|
|
211
|
+
htp.p('<h1>'||title||'</h1>');
|
|
212
|
+
htp.p('<p><a href="sample.pageIndex">Menu</a></p>');
|
|
213
|
+
END openPage;
|
|
214
|
+
|
|
215
|
+
PROCEDURE closePage
|
|
216
|
+
IS
|
|
217
|
+
BEGIN
|
|
218
|
+
htp.p('</body>');
|
|
219
|
+
htp.p('</html>');
|
|
220
|
+
END closePage;
|
|
221
|
+
|
|
222
|
+
END sample;
|
|
223
|
+
/
|
package/examples/sql/sample.pks
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
CREATE OR REPLACE
|
|
2
|
-
PACKAGE sample IS
|
|
3
|
-
|
|
4
|
-
TYPE vc_arr IS TABLE OF VARCHAR2(2000) INDEX BY BINARY_INTEGER;
|
|
5
|
-
|
|
6
|
-
FUNCTION emptyArray RETURN vc_arr;
|
|
7
|
-
|
|
8
|
-
PROCEDURE pageIndex(p IN VARCHAR2 DEFAULT NULL);
|
|
9
|
-
PROCEDURE pageSimple(text IN VARCHAR2 DEFAULT NULL);
|
|
10
|
-
PROCEDURE pageFlexible(name_array IN owa.vc_arr, value_array IN owa.vc_arr);
|
|
11
|
-
PROCEDURE pageArray(text IN vc_arr);
|
|
12
|
-
PROCEDURE pageCGI;
|
|
13
|
-
PROCEDURE pageCookie;
|
|
14
|
-
PROCEDURE pageForm;
|
|
15
|
-
PROCEDURE pageFormProcess(firstname IN VARCHAR2 DEFAULT NULL, lastname IN VARCHAR2 DEFAULT NULL, age IN VARCHAR2 DEFAULT NULL, sex IN VARCHAR2 DEFAULT NULL, vehicle IN vc_arr DEFAULT emptyArray);
|
|
16
|
-
PROCEDURE pageFileUpload;
|
|
17
|
-
PROCEDURE pageFileUploaded(name_array IN owa.vc_arr, value_array IN owa.vc_arr);
|
|
18
|
-
PROCEDURE pageRedirect;
|
|
19
|
-
PROCEDURE pageLocation;
|
|
20
|
-
PROCEDURE pageOther;
|
|
21
|
-
PROCEDURE pagePathAlias(p_path IN VARCHAR2);
|
|
22
|
-
|
|
23
|
-
END sample;
|
|
24
|
-
/
|
|
1
|
+
CREATE OR REPLACE
|
|
2
|
+
PACKAGE sample IS
|
|
3
|
+
|
|
4
|
+
TYPE vc_arr IS TABLE OF VARCHAR2(2000) INDEX BY BINARY_INTEGER;
|
|
5
|
+
|
|
6
|
+
FUNCTION emptyArray RETURN vc_arr;
|
|
7
|
+
|
|
8
|
+
PROCEDURE pageIndex(p IN VARCHAR2 DEFAULT NULL);
|
|
9
|
+
PROCEDURE pageSimple(text IN VARCHAR2 DEFAULT NULL);
|
|
10
|
+
PROCEDURE pageFlexible(name_array IN owa.vc_arr, value_array IN owa.vc_arr);
|
|
11
|
+
PROCEDURE pageArray(text IN vc_arr);
|
|
12
|
+
PROCEDURE pageCGI;
|
|
13
|
+
PROCEDURE pageCookie;
|
|
14
|
+
PROCEDURE pageForm;
|
|
15
|
+
PROCEDURE pageFormProcess(firstname IN VARCHAR2 DEFAULT NULL, lastname IN VARCHAR2 DEFAULT NULL, age IN VARCHAR2 DEFAULT NULL, sex IN VARCHAR2 DEFAULT NULL, vehicle IN vc_arr DEFAULT emptyArray);
|
|
16
|
+
PROCEDURE pageFileUpload;
|
|
17
|
+
PROCEDURE pageFileUploaded(name_array IN owa.vc_arr, value_array IN owa.vc_arr);
|
|
18
|
+
PROCEDURE pageRedirect;
|
|
19
|
+
PROCEDURE pageLocation;
|
|
20
|
+
PROCEDURE pageOther;
|
|
21
|
+
PROCEDURE pagePathAlias(p_path IN VARCHAR2);
|
|
22
|
+
|
|
23
|
+
END sample;
|
|
24
|
+
/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
-- set the username
|
|
2
|
-
define SAMPLE_USER=sample
|
|
3
|
-
|
|
4
|
-
-- drop user
|
|
5
|
-
DROP USER &&SAMPLE_USER CASCADE;
|
|
1
|
+
-- set the username
|
|
2
|
+
define SAMPLE_USER=sample
|
|
3
|
+
|
|
4
|
+
-- drop user
|
|
5
|
+
DROP USER &&SAMPLE_USER CASCADE;
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
body {
|
|
2
|
-
font-family: Helvetica, Arial, sans-serif;
|
|
3
|
-
}
|
|
4
|
-
|
|
5
|
-
table {
|
|
6
|
-
color: #333;
|
|
7
|
-
width: 640px;
|
|
8
|
-
border-collapse:
|
|
9
|
-
collapse; border-spacing: 0;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
td, th {
|
|
13
|
-
border: 1px solid #CCC;
|
|
14
|
-
height: 30px;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
th {
|
|
18
|
-
background: #F3F3F3;
|
|
19
|
-
font-weight: bold;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
td {
|
|
23
|
-
background: #FAFAFA;
|
|
24
|
-
text-align: center;
|
|
25
|
-
}
|
|
1
|
+
body {
|
|
2
|
+
font-family: Helvetica, Arial, sans-serif;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
table {
|
|
6
|
+
color: #333;
|
|
7
|
+
width: 640px;
|
|
8
|
+
border-collapse:
|
|
9
|
+
collapse; border-spacing: 0;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
td, th {
|
|
13
|
+
border: 1px solid #CCC;
|
|
14
|
+
height: 30px;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
th {
|
|
18
|
+
background: #F3F3F3;
|
|
19
|
+
font-weight: bold;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
td {
|
|
23
|
+
background: #FAFAFA;
|
|
24
|
+
text-align: center;
|
|
25
|
+
}
|