@@ -152,6 +152,93 @@ CALL test_proc7(100, -1, -1);
152
152
0 | 1
153
153
(1 row)
154
154
155
+ -- named parameters and defaults
156
+ CREATE PROCEDURE test_proc8a(INOUT a int, INOUT b int)
157
+ LANGUAGE plpgsql
158
+ AS $$
159
+ BEGIN
160
+ RAISE NOTICE 'a: %, b: %', a, b;
161
+ a := a * 10;
162
+ b := b + 10;
163
+ END;
164
+ $$;
165
+ CALL test_proc8a(10, 20);
166
+ NOTICE: a: 10, b: 20
167
+ a | b
168
+ -----+----
169
+ 100 | 30
170
+ (1 row)
171
+
172
+ CALL test_proc8a(b => 20, a => 10);
173
+ NOTICE: a: 10, b: 20
174
+ a | b
175
+ -----+----
176
+ 100 | 30
177
+ (1 row)
178
+
179
+ DO $$
180
+ DECLARE _a int; _b int;
181
+ BEGIN
182
+ _a := 10; _b := 30;
183
+ CALL test_proc8a(_a, _b);
184
+ RAISE NOTICE '_a: %, _b: %', _a, _b;
185
+ CALL test_proc8a(b => _b, a => _a);
186
+ RAISE NOTICE '_a: %, _b: %', _a, _b;
187
+ END
188
+ $$;
189
+ NOTICE: a: 10, b: 30
190
+ NOTICE: _a: 100, _b: 40
191
+ NOTICE: a: 100, b: 40
192
+ NOTICE: _a: 1000, _b: 50
193
+ CREATE PROCEDURE test_proc8b(INOUT a int, INOUT b int, INOUT c int)
194
+ LANGUAGE plpgsql
195
+ AS $$
196
+ BEGIN
197
+ RAISE NOTICE 'a: %, b: %, c: %', a, b, c;
198
+ a := a * 10;
199
+ b := b + 10;
200
+ c := c * -10;
201
+ END;
202
+ $$;
203
+ DO $$
204
+ DECLARE _a int; _b int; _c int;
205
+ BEGIN
206
+ _a := 10; _b := 30; _c := 50;
207
+ CALL test_proc8b(_a, _b, _c);
208
+ RAISE NOTICE '_a: %, _b: %, _c: %', _a, _b, _c;
209
+ CALL test_proc8b(_a, c => _c, b => _b);
210
+ RAISE NOTICE '_a: %, _b: %, _c: %', _a, _b, _c;
211
+ END
212
+ $$;
213
+ NOTICE: a: 10, b: 30, c: 50
214
+ NOTICE: _a: 100, _b: 40, _c: -500
215
+ NOTICE: a: 100, b: 40, c: -500
216
+ NOTICE: _a: 1000, _b: 50, _c: 5000
217
+ CREATE PROCEDURE test_proc8c(INOUT a int, INOUT b int, INOUT c int DEFAULT 11)
218
+ LANGUAGE plpgsql
219
+ AS $$
220
+ BEGIN
221
+ RAISE NOTICE 'a: %, b: %, c: %', a, b, c;
222
+ a := a * 10;
223
+ b := b + 10;
224
+ c := c * -10;
225
+ END;
226
+ $$;
227
+ DO $$
228
+ DECLARE _a int; _b int; _c int;
229
+ BEGIN
230
+ _a := 10; _b := 30; _c := 50;
231
+ CALL test_proc8c(_a, _b);
232
+ RAISE NOTICE '_a: %, _b: %, _c: %', _a, _b, _c;
233
+ _a := 10; _b := 30; _c := 50;
234
+ CALL test_proc8c(_a, b => _b);
235
+ RAISE NOTICE '_a: %, _b: %, _c: %', _a, _b, _c;
236
+ END
237
+ $$;
238
+ NOTICE: a: 10, b: 30, c: 11
239
+ NOTICE: _a: 100, _b: 40, _c: 50
240
+ NOTICE: a: 10, b: 30, c: 11
241
+ NOTICE: _a: 100, _b: 40, _c: 50
155
242
-- transition variable assignment
156
243
TRUNCATE test1;
157
244
CREATE FUNCTION triggerfunc1() RETURNS trigger
0 commit comments