-- 创建模块表 create table module ( sid number(10) not null, module_name varchar2(20) not null, pid number(10) );
-- 插入数据 insert into module(sid, module_name, pid) values (1, '模块1', null); insert into module(sid, module_name, pid) values (2, '模块2', null); insert into module(sid, module_name, pid) values (3, '模块3', null); insert into module(sid, module_name, pid) values (4, '模块21', 2); insert into module(sid, module_name, pid) values (5, '模块31', 3); insert into module(sid, module_name, pid) values (6, '模块211', 4); insert into module(sid, module_name, pid) values (7, '模块11', 1); insert into module(sid, module_name, pid) values (8, '模块111', 7); insert into module(sid, pid, module_name) values(9, 3, '模块32');
-- 从头节点开始递归遍历 with tree(sid, pid, name) as ( select m.sid, m.pid, m.module_name from module m where m.pid is null union all select m2.sid, m2.pid, m2.module_name from tree inner join module m2 on tree.sid = m2.pid ) select * from tree order by sid;
-- 从指定节点开始递归遍历 with tree(sid, pid, name) as ( select m.sid, m.pid, m.module_name from module m where m.sid = 2 union all select m2.sid, m2.pid, m2.module_name from tree inner join module m2 on tree.sid = m2.pid ) select * from tree order by sid;
-- 从叶节点开始方向递归遍历,注意distinct with tree(sid, pid, name) as ( select m.sid, m.pid, m.module_name from module m where m.sid in (5,6,8, 9) union all select distinct m2.sid, m2.pid, m2.module_name from tree inner join module m2 on tree.pid = m2.sid ) select * from tree order by sid;
-- 查询指定层级上的节点,先要遍历全部 with tree(sid, pid, name, level) as ( select m.sid, m.pid, m.module_name, 0 from module m where m.pid is null union all select m2.sid, m2.pid, m2.module_name, tree.level + 1 from tree inner join module m2 on tree.sid = m2.pid ) select * from tree where level = 1 order by sid;
-- 注意with as...后只支持select语句,不支持如下级联删除 with tree(sid, pid, name) as ( select m.sid, m.pid, m.module_name from module m where m.sid = 2 union all select m2.sid, m2.pid, m2.module_name from tree inner join module m2 on tree.sid = m2.pid ) delete from module where sid in (select sid from tree);
相关推荐
完美解决多级递归查询,支持多种数据库,可以参照类似写法。有的数据库还是不支持的,但有类似的写法如oracle
递归下降语法分析器的实现递归下降语法分析器的实现递归下降语法分析器的实现递归下降语法分析器的实现递归下降语法分析器的实现
中国矿业大学编译原理实践课程,C语言编译器之递归下降语法分析器
用java语言编写的递归下降语法分析器用java语言编写的递归下降语法分析器用java语言编写的递归下降语法分析器
递归下降语法分析程序要求: 忽略注释; 有出错恢复处理功能; 显示错误格式“第xx行出现xxx错误”
本程是用递归方法语法分析器,有很多不足处,希望大家指出!
c语言编写的递归下降语法分析器的算法,测试成功可以直接跑代码
此菜单是与数据库相关联的,数据库设置多少级,你的树形菜单就能添加多少级,且不受限制,只需要调整网页界面就能出现不同的树形菜单风格。文件有源代码及sql语句,只需要简单的导入就行。
一个关于递归下降的语法分析,对于学习编译原理的初学者应该比较有参考价值,结构清晰,易懂。
实现一个递归下降语法分析程序,识别用户输入的算术表达式。 二、实验主要内容 1、文法如下: E®TE` E’®+TE’|-TE’|e T®FT` T’®*FT’|/FT’|e F®(E)|i 2、求取各非终结符的First及Follow集合 3、编程...
递归下降语法分析程序的范例代码...实验内容及操作示范详见实验指导书...
一个关于递归下降语法分析器设计的文档
递归下降语法分析器,编译原理福利
递归循环读取省市区json文件数据,并保存到数据库中(很全面) 其中包含代码,json文件,实体类代码。轻松上手
这是用递归下降方法进行语法分析的一个程序,用于课程设计,代码规模很可观了,费了很多时间才弄出来。
实现一个递归下降语法分析程序 识别用户输入的算术表达式 文法如下: E TE E’ +TE’| TE’|e T FT T’ FT’| FT’|e F E |i
设计递归下降翻译器,完成语法分析和中间代码翻译。 输入:一个完整的源程序 输出:与输入对应的一个语法树、四元式序列 2、资源 课设报告word 课设源码 3、开发环境 编程语言:C++ IDE:VS 2019
一个递归下降语法分析 可以用的 *╯3╰)