@@ -152,6 +152,93 @@ CALL test_proc7(100, -1, -1);
152152 0 | 1
153153(1 row)
154154
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
155242-- transition variable assignment
156243TRUNCATE test1;
157244CREATE FUNCTION triggerfunc1() RETURNS trigger
0 commit comments