Skip to content

Commit

Permalink
MDEV-10597 Cursors with parameters
Browse files Browse the repository at this point in the history
  • Loading branch information
Alexander Barkov committed Apr 5, 2017
1 parent 4ed804a commit f8a714c
Show file tree
Hide file tree
Showing 15 changed files with 1,606 additions and 222 deletions.
60 changes: 60 additions & 0 deletions mysql-test/suite/compat/oracle/r/sp-code.result
Expand Up @@ -827,3 +827,63 @@ SELECT f1(3), f1(4), f1(5), f1(6) FROM DUAL;
f1(3) f1(4) f1(5) f1(6)
3 4 4 5
DROP FUNCTION f1;
#
# Start of MDEV-10597 Cursors with parameters
#
CREATE PROCEDURE p1(arg_value_a VARCHAR, arg_value_b VARCHAR,
arg_pattern_a VARCHAR, arg_pattern_b VARCHAR)
AS
v_a VARCHAR(10);
v_b VARCHAR(20);
CURSOR c (p_value_a VARCHAR,
p_value_b VARCHAR,
p_pattern_a VARCHAR,
p_pattern_b VARCHAR,
p_limit_a INT,
p_limit_b INT,
p_unused TEXT) IS
(SELECT p_value_a, p_value_b FROM DUAL
WHERE p_value_a LIKE p_pattern_a LIMIT p_limit_a)
UNION
(SELECT p_value_b, p_value_a FROM DUAL
WHERE p_value_b LIKE p_pattern_b LIMIT p_limit_b);
BEGIN
OPEN c(arg_value_a, (SELECT arg_value_b),
arg_pattern_a, arg_pattern_b, 100, 101, 'x');
LOOP
FETCH c INTO v_a, v_b;
EXIT WHEN c%NOTFOUND;
SELECT v_a, v_b;
END LOOP;
CLOSE c;
END;
$$
CALL p1('aaa','bbb','aaa','bbb');
v_a v_b
aaa bbb
v_a v_b
bbb aaa
SHOW PROCEDURE CODE p1;
Pos Instruction
0 set v_a@4 NULL
1 set v_b@5 NULL
2 cpush c@0
3 set p_value_a@6 arg_value_a@0
4 set p_value_b@7 (select arg_value_b@1)
5 set p_pattern_a@8 arg_pattern_a@2
6 set p_pattern_b@9 arg_pattern_b@3
7 set p_limit_a@10 100
8 set p_limit_b@11 101
9 set p_unused@12 'x'
10 copen c@0
11 cfetch c@0 v_a@4 v_b@5
12 jump_if_not 14(0) "c"%NOTFOUND
13 jump 16
14 stmt 0 "SELECT v_a, v_b"
15 jump 11
16 cclose c@0
17 cpop 1
DROP PROCEDURE p1;
#
# End of MDEV-10597 Cursors with parameters
#

0 comments on commit f8a714c

Please sign in to comment.