Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-10142 PL/SQL parser
  3. MDEV-12314

sql_mode=ORACLE: Implicit cursor FOR LOOP for cursors with parameters

Details

    • 10.2.2-3, 10.2.2-1, 10.2.2-2, 10.2.2-4, 10.1.18

    Description

      This is similar to MDEV-12098, but for cursors with parameters.

      The below script demonstrates using of a FOR loop with a cursor cur that has two parameters.

      DROP TABLE IF EXISTS t1;
      DROP PROCEDURE IF EXISTS p1;
      SET sql_mode=ORACLE;
      CREATE TABLE t1 (a INT, b VARCHAR(32));
      INSERT INTO t1 VALUES (10,'b0');
      INSERT INTO t1 VALUES (11,'b1');
      INSERT INTO t1 VALUES (12,'b2');
      DELIMITER $$
      CREATE PROCEDURE p1(pa INT, pb VARCHAR(32)) AS 
        CURSOR cur(va INT, vb VARCHAR(32)) IS
          SELECT a, b FROM t1 WHERE a=va AND b=vb;
      BEGIN
        FOR rec IN cur(pa,pb)
        LOOP
          SELECT rec.a, rec.b;
        END LOOP;
      END;
      $$
      DELIMITER ;
      CALL p1(10,'B0');
      CALL p1(11,'B1');
      CALL p1(12,'B2');
      CALL p1(12,'non-existing');
      DROP TABLE t1;
      DROP PROCEDURE p1;
      

      The expected output is:

      +-------+-------+
      | rec.a | rec.b |
      +-------+-------+
      |    10 | b0    |
      +-------+-------+
      +-------+-------+
      | rec.a | rec.b |
      +-------+-------+
      |    11 | b1    |
      +-------+-------+
      +-------+-------+
      | rec.a | rec.b |
      +-------+-------+
      |    12 | b2    |
      +-------+-------+
      

      Attachments

        Issue Links

          Activity

            bar Alexander Barkov created issue -
            bar Alexander Barkov made changes -
            Field Original Value New Value
            bar Alexander Barkov made changes -
            Status Open [ 1 ] In Progress [ 3 ]
            bar Alexander Barkov made changes -
            Fix Version/s 10.3.0 [ 22127 ]
            Fix Version/s 10.3 [ 22126 ]
            Resolution Fixed [ 1 ]
            Status In Progress [ 3 ] Closed [ 6 ]
            bar Alexander Barkov made changes -
            Labels Compatibility Compatibility need_review
            bar Alexander Barkov made changes -
            Summary Implicit cursor FOR LOOP for cursors with parameters sql_mode=ORACLE: Implicit cursor FOR LOOP for cursors with parameters
            bar Alexander Barkov made changes -
            Labels Compatibility need_review Compatibility
            bar Alexander Barkov made changes -
            serg Sergei Golubchik made changes -
            Workflow MariaDB v3 [ 80051 ] MariaDB v4 [ 151830 ]
            bar Alexander Barkov made changes -

            People

              bar Alexander Barkov
              bar Alexander Barkov
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.