Details
-
Technical task
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
None
-
10.2.2-3, 10.2.2-1, 10.2.2-2, 10.2.2-4, 10.1.18
Description
Add support for Oracle-style EXECUTE IMMEDIATE statement.
This is used to execute a sql-statement stored in a string or variable, with possible arguments.
Examples:
EXECUTE IMMEDIATE 'SELECT 1' |
This is a shorthand for:
prepare stmt from "select 1"; |
execute stmt; |
deallocate prepare stmt; |
Attachments
Issue Links
- is blocked by
-
MDEV-10709 Expressions as parameters to Dynamic SQL
-
- Closed
-
- relates to
-
MDEV-10866 Extend PREPARE and EXECUTE IMMEDIATE to understand expressions
-
- Closed
-
-
MDEV-10801 sql_mode=ORACLE: Dynamic SQL placeholders
-
- Closed
-
-
MDEV-11781 sql_mode=ORACLE: IN, OUT, IN OUT modes for dynamic SQL bind arguments
-
- Open
-
Activity
Field | Original Value | New Value |
---|---|---|
Description |
Add support for Oracle-style {{EXECUTE IMMEDIATE}} statement.
|
Add support for Oracle-style {{EXECUTE IMMEDIATE}} statement.
Example: {code:sql} DECLARE plsql_block VARCHAR2(500); new_deptid NUMBER(4); new_dname VARCHAR2(30) := 'Advertising'; new_mgrid NUMBER(6) := 200; new_locid NUMBER(4) := 1700; BEGIN -- Dynamic PL/SQL block invokes subprogram: plsql_block := 'BEGIN create_dept(:a, :b, :c, :d); END;'; /* Specify bind arguments in USING clause. Specify mode for first parameter. Modes of other parameters are correct by default. */ EXECUTE IMMEDIATE plsql_block USING IN OUT new_deptid, new_dname, new_mgrid, new_locid; END; / {code} |
Parent |
|
|
Issue Type | Task [ 3 ] | Technical task [ 7 ] |
Description |
Add support for Oracle-style {{EXECUTE IMMEDIATE}} statement.
Example: {code:sql} DECLARE plsql_block VARCHAR2(500); new_deptid NUMBER(4); new_dname VARCHAR2(30) := 'Advertising'; new_mgrid NUMBER(6) := 200; new_locid NUMBER(4) := 1700; BEGIN -- Dynamic PL/SQL block invokes subprogram: plsql_block := 'BEGIN create_dept(:a, :b, :c, :d); END;'; /* Specify bind arguments in USING clause. Specify mode for first parameter. Modes of other parameters are correct by default. */ EXECUTE IMMEDIATE plsql_block USING IN OUT new_deptid, new_dname, new_mgrid, new_locid; END; / {code} |
Add support for Oracle-style {{EXECUTE IMMEDIATE}} statement.
It's a combination of {{PREPARE}}, {{EXECUTE}} and {{DEALLOCATE}}. Example: {code:sql} DECLARE plsql_block VARCHAR2(500); new_deptid NUMBER(4); new_dname VARCHAR2(30) := 'Advertising'; new_mgrid NUMBER(6) := 200; new_locid NUMBER(4) := 1700; BEGIN -- Dynamic PL/SQL block invokes subprogram: plsql_block := 'BEGIN create_dept(:a, :b, :c, :d); END;'; /* Specify bind arguments in USING clause. Specify mode for first parameter. Modes of other parameters are correct by default. */ EXECUTE IMMEDIATE plsql_block USING IN OUT new_deptid, new_dname, new_mgrid, new_locid; END; / {code} |
Labels | Compatibility |
Labels | Compatibility |
Assignee | Alexander Barkov [ bar ] |
Link |
This issue is blocked by |
Labels | Compatibility |
Labels | Compatibility |
Labels | Compatibility |
Link |
This issue relates to |
Status | Open [ 1 ] | In Progress [ 3 ] |
Assignee | Alexander Barkov [ bar ] | Michael Widenius [ monty ] |
Status | In Progress [ 3 ] | In Review [ 10002 ] |
Description |
Add support for Oracle-style {{EXECUTE IMMEDIATE}} statement.
It's a combination of {{PREPARE}}, {{EXECUTE}} and {{DEALLOCATE}}. Example: {code:sql} DECLARE plsql_block VARCHAR2(500); new_deptid NUMBER(4); new_dname VARCHAR2(30) := 'Advertising'; new_mgrid NUMBER(6) := 200; new_locid NUMBER(4) := 1700; BEGIN -- Dynamic PL/SQL block invokes subprogram: plsql_block := 'BEGIN create_dept(:a, :b, :c, :d); END;'; /* Specify bind arguments in USING clause. Specify mode for first parameter. Modes of other parameters are correct by default. */ EXECUTE IMMEDIATE plsql_block USING IN OUT new_deptid, new_dname, new_mgrid, new_locid; END; / {code} |
Add support for Oracle-style {{EXECUTE IMMEDIATE}} statement.
This is used to execute a sql-statement stored in a string, with possible arguments. Example: {code:sql} DECLARE plsql_block VARCHAR2(500); new_deptid NUMBER(4); new_dname VARCHAR2(30) := 'Advertising'; new_mgrid NUMBER(6) := 200; new_locid NUMBER(4) := 1700; BEGIN -- Dynamic PL/SQL block invokes subprogram: plsql_block := 'BEGIN create_dept(:a, :b, :c, :d); END;'; /* Specify bind arguments in USING clause. Specify mode for first parameter. Modes of other parameters are correct by default. */ EXECUTE IMMEDIATE plsql_block USING IN OUT new_deptid, new_dname, new_mgrid, new_locid; END; / {code} |
Description |
Add support for Oracle-style {{EXECUTE IMMEDIATE}} statement.
This is used to execute a sql-statement stored in a string, with possible arguments. Example: {code:sql} DECLARE plsql_block VARCHAR2(500); new_deptid NUMBER(4); new_dname VARCHAR2(30) := 'Advertising'; new_mgrid NUMBER(6) := 200; new_locid NUMBER(4) := 1700; BEGIN -- Dynamic PL/SQL block invokes subprogram: plsql_block := 'BEGIN create_dept(:a, :b, :c, :d); END;'; /* Specify bind arguments in USING clause. Specify mode for first parameter. Modes of other parameters are correct by default. */ EXECUTE IMMEDIATE plsql_block USING IN OUT new_deptid, new_dname, new_mgrid, new_locid; END; / {code} |
Add support for Oracle-style {{EXECUTE IMMEDIATE}} statement.
This is used to execute a sql-statement stored in a string, with possible arguments. Examples: {code:sql} EXECUTE IMMEDIATE 'SELECT 1' {code} {code:sql} DECLARE plsql_block VARCHAR2(500); new_deptid NUMBER(4); new_dname VARCHAR2(30) := 'Advertising'; new_mgrid NUMBER(6) := 200; new_locid NUMBER(4) := 1700; BEGIN -- Dynamic PL/SQL block invokes subprogram: plsql_block := 'BEGIN create_dept(:a, :b, :c, :d); END;'; /* Specify bind arguments in USING clause. Specify mode for first parameter. Modes of other parameters are correct by default. */ EXECUTE IMMEDIATE plsql_block USING IN OUT new_deptid, new_dname, new_mgrid, new_locid; END; / {code} |
Description |
Add support for Oracle-style {{EXECUTE IMMEDIATE}} statement.
This is used to execute a sql-statement stored in a string, with possible arguments. Examples: {code:sql} EXECUTE IMMEDIATE 'SELECT 1' {code} {code:sql} DECLARE plsql_block VARCHAR2(500); new_deptid NUMBER(4); new_dname VARCHAR2(30) := 'Advertising'; new_mgrid NUMBER(6) := 200; new_locid NUMBER(4) := 1700; BEGIN -- Dynamic PL/SQL block invokes subprogram: plsql_block := 'BEGIN create_dept(:a, :b, :c, :d); END;'; /* Specify bind arguments in USING clause. Specify mode for first parameter. Modes of other parameters are correct by default. */ EXECUTE IMMEDIATE plsql_block USING IN OUT new_deptid, new_dname, new_mgrid, new_locid; END; / {code} |
Add support for Oracle-style {{EXECUTE IMMEDIATE}} statement.
This is used to execute a sql-statement stored in a string, with possible arguments. Examples: {code:sql} EXECUTE IMMEDIATE 'SELECT 1' {code} or {code:sql} DECLARE plsql_block VARCHAR2(500); new_deptid NUMBER(4); new_dname VARCHAR2(30) := 'Advertising'; new_mgrid NUMBER(6) := 200; new_locid NUMBER(4) := 1700; BEGIN -- Dynamic PL/SQL block invokes subprogram: plsql_block := 'BEGIN create_dept(:a, :b, :c, :d); END;'; /* Specify bind arguments in USING clause. Specify mode for first parameter. Modes of other parameters are correct by default. */ EXECUTE IMMEDIATE plsql_block USING IN OUT new_deptid, new_dname, new_mgrid, new_locid; END; / {code} |
Description |
Add support for Oracle-style {{EXECUTE IMMEDIATE}} statement.
This is used to execute a sql-statement stored in a string, with possible arguments. Examples: {code:sql} EXECUTE IMMEDIATE 'SELECT 1' {code} or {code:sql} DECLARE plsql_block VARCHAR2(500); new_deptid NUMBER(4); new_dname VARCHAR2(30) := 'Advertising'; new_mgrid NUMBER(6) := 200; new_locid NUMBER(4) := 1700; BEGIN -- Dynamic PL/SQL block invokes subprogram: plsql_block := 'BEGIN create_dept(:a, :b, :c, :d); END;'; /* Specify bind arguments in USING clause. Specify mode for first parameter. Modes of other parameters are correct by default. */ EXECUTE IMMEDIATE plsql_block USING IN OUT new_deptid, new_dname, new_mgrid, new_locid; END; / {code} |
Add support for Oracle-style {{EXECUTE IMMEDIATE}} statement.
This is used to execute a sql-statement stored in a string or variable, with possible arguments. Examples: {code:sql} EXECUTE IMMEDIATE 'SELECT 1' {code} This is a shorthand for: {code:sql} prepare stmt from "select 1"; execute stmt; deallocate prepare stmt; {code} Another example: {code:sql} DECLARE plsql_block VARCHAR2(500); new_deptid NUMBER(4); new_dname VARCHAR2(30) := 'Advertising'; new_mgrid NUMBER(6) := 200; new_locid NUMBER(4) := 1700; BEGIN -- Dynamic PL/SQL block invokes subprogram: plsql_block := 'BEGIN create_dept(:a, :b, :c, :d); END;'; /* Specify bind arguments in USING clause. Specify mode for first parameter. Modes of other parameters are correct by default. */ EXECUTE IMMEDIATE plsql_block USING IN OUT new_deptid, new_dname, new_mgrid, new_locid; END; / {code} |
Status | In Review [ 10002 ] | Stalled [ 10000 ] |
Component/s | Parser [ 10201 ] | |
Component/s | Prepared Statements [ 10804 ] | |
Fix Version/s | 10.3.0 [ 22127 ] | |
Fix Version/s | 10.2 [ 14601 ] | |
Resolution | Fixed [ 1 ] | |
Status | Stalled [ 10000 ] | Closed [ 6 ] |
Assignee | Michael Widenius [ monty ] | Alexander Barkov [ bar ] |
Resolution | Fixed [ 1 ] | |
Status | Closed [ 6 ] | Stalled [ 10000 ] |
Resolution | Fixed [ 1 ] | |
Status | Stalled [ 10000 ] | Closed [ 6 ] |
Fix Version/s | 10.2.3 [ 22115 ] |
Labels | Compatibility | Compatibility NRE-307517 |
Link |
This issue relates to |
Labels | Compatibility NRE-307517 | Approved Compatibility NRE-307517 |
NRE Projects | NRE-307517 |
Labels | Approved Compatibility NRE-307517 | Approved Compatibility |
NRE Approved | Yes [ 10304 ] |
Labels | Approved Compatibility | Compatibility |
Description |
Add support for Oracle-style {{EXECUTE IMMEDIATE}} statement.
This is used to execute a sql-statement stored in a string or variable, with possible arguments. Examples: {code:sql} EXECUTE IMMEDIATE 'SELECT 1' {code} This is a shorthand for: {code:sql} prepare stmt from "select 1"; execute stmt; deallocate prepare stmt; {code} Another example: {code:sql} DECLARE plsql_block VARCHAR2(500); new_deptid NUMBER(4); new_dname VARCHAR2(30) := 'Advertising'; new_mgrid NUMBER(6) := 200; new_locid NUMBER(4) := 1700; BEGIN -- Dynamic PL/SQL block invokes subprogram: plsql_block := 'BEGIN create_dept(:a, :b, :c, :d); END;'; /* Specify bind arguments in USING clause. Specify mode for first parameter. Modes of other parameters are correct by default. */ EXECUTE IMMEDIATE plsql_block USING IN OUT new_deptid, new_dname, new_mgrid, new_locid; END; / {code} |
Add support for Oracle-style {{EXECUTE IMMEDIATE}} statement.
This is used to execute a sql-statement stored in a string or variable, with possible arguments. Examples: {code:sql} EXECUTE IMMEDIATE 'SELECT 1' {code} This is a shorthand for: {code:sql} prepare stmt from "select 1"; execute stmt; deallocate prepare stmt; {code} |
Link | This issue relates to MDEV-11781 [ MDEV-11781 ] |
Workflow | MariaDB v3 [ 76690 ] | MariaDB v4 [ 150775 ] |
Review done. Code looks good, asked to add one comment to one place before pushing