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;


« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3