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;