Fix pl/tcl's handling of errors from Tcl_ListObjGetElements().
[pgsql.git] / src / pl / tcl / sql / pltcl_call.sql
blobfe64361c732841c8c0a5396824c6c61ea72f0f68
1 CREATE PROCEDURE test_proc1()
2 LANGUAGE pltcl
3 AS $$
4 unset
5 $$;
7 CALL test_proc1();
10 CREATE PROCEDURE test_proc2()
11 LANGUAGE pltcl
12 AS $$
13 return 5
14 $$;
16 CALL test_proc2();
19 CREATE TABLE test1 (a int);
21 CREATE PROCEDURE test_proc3(x int)
22 LANGUAGE pltcl
23 AS $$
24 spi_exec "INSERT INTO test1 VALUES ($1)"
25 $$;
27 CALL test_proc3(55);
29 SELECT * FROM test1;
32 -- output arguments
34 CREATE PROCEDURE test_proc5(INOUT a text)
35 LANGUAGE pltcl
36 AS $$
37 set aa [concat $1 "+" $1]
38 return [list a $aa]
39 $$;
41 CALL test_proc5('abc');
44 CREATE PROCEDURE test_proc6(a int, INOUT b int, INOUT c int)
45 LANGUAGE pltcl
46 AS $$
47 set bb [expr $2 * $1]
48 set cc [expr $3 * $1]
49 return [list b $bb c $cc]
50 $$;
52 CALL test_proc6(2, 3, 4);
55 -- OUT parameters
57 CREATE PROCEDURE test_proc9(IN a int, OUT b int)
58 LANGUAGE pltcl
59 AS $$
60 elog NOTICE "a: $1"
61 return [list b [expr {$1 * 2}]]
62 $$;
64 DO $$
65 DECLARE _a int; _b int;
66 BEGIN
67   _a := 10; _b := 30;
68   CALL test_proc9(_a, _b);
69   RAISE NOTICE '_a: %, _b: %', _a, _b;
70 END
71 $$;
74 -- syntax error in result tuple
76 CREATE PROCEDURE test_proc10(INOUT a text)
77 LANGUAGE pltcl
78 AS $$
79 return [list a {$a + $a}])
80 $$;
82 CALL test_proc10('abc');
85 DROP PROCEDURE test_proc1;
86 DROP PROCEDURE test_proc2;
87 DROP PROCEDURE test_proc3;
89 DROP TABLE test1;