Oracle中DBMS_SQL解析SQL语句的流程


Oracle中DBMS_SQL解析SQL语句的流程

——————————————————————————–
The flow of procedure calls will typically look like this:

———–
| open_cursor |
———–
|
|
v
—–
————>| parse |
|               —–
|                 |
|                 |———
|                 v         |
|           ————–  |
|——–>| bind_variable | |
|     ^     ————-   |
|     |           |         |
|      ———–|         |
|                 |<——–
|                 v
|               query?———- yes ———
|                 |                           |
|                no                           |
|                 |                           |
|                 v                           v
|              ——-                  ————-
|———–>| execute |            ->| define_column |
|              ——-             |    ————-
|                 |————    |          |
|                 |            |    ———-|
|                 v            |              v
|           ————–     |           ——-
|       ->| variable_value |   |  ——>| execute |
|      |    ————–     | |         ——-
|      |          |            | |            |
|       ———-|            | |            |
|                 |            | |            v
|                 |            | |        ———-
|                 |<———–  |—–>| fetch_rows |
|                 |              |        ———-
|                 |              |            |
|                 |              |            v
|                 |              |    ——————–
|                 |              |  | column_value         |
|                 |              |  | variable_value       |
|                 |              |    ———————
|                 |              |            |
|                 |<————————–
|                 |
—————–|
|
v
————
| close_cursor |
————

——————————————————————————–
set pagesize 100;
SELECT substr(t.text, 5, 1000)
FROM all_source t
WHERE t.owner = ‘SYS’
AND t.type = ‘PACKAGE’
AND t.name = ‘DBMS_SQL’
AND t.line <= 95
AND t.line >= 38;

相关内容