如何将 pl/sql 代码转换为 Ansi-Sql?
How to make pl/sql code to Ansi-Sql?
我的问题对 sql 专家来说可能没有挑战性。我想将我的 sql 重写为 ansi-sql。我如何在 Oracle 中将 sql 以下更改为 ansi-sql?
select *
from TEST r
start with r.childid=@CHILDID
connect by prior r.PARENTID=r.childid and r.recordstatus=1
等效的 ANSI SQL 将是递归通用 table 表达式:
with recursive tree as (
select *
from test
where childid = .... --<< this is the START WITH part
union all
select child.*
from test child
join tree parent ON child.parentid = parent.childid and child.recordstatus = 1 --<< this is the CONNECT BY part
)
select *
from tree
如果您还想将 recordstatus = 1
条件应用于递归开始,我不是 100%。
Oracle不符合这里的标准,不允许使用recursive
关键字。
所以需要从上面的查询中去掉recursive
(SQL服务器也是如此)
有关递归通用 table 表达式(在 Oracle 中称为 "subquery factoring")的更多详细信息,请参阅手册:
https://docs.oracle.com/database/121/SQLRF/statements_10002.htm#SQLRF55268
我的问题对 sql 专家来说可能没有挑战性。我想将我的 sql 重写为 ansi-sql。我如何在 Oracle 中将 sql 以下更改为 ansi-sql?
select *
from TEST r
start with r.childid=@CHILDID
connect by prior r.PARENTID=r.childid and r.recordstatus=1
等效的 ANSI SQL 将是递归通用 table 表达式:
with recursive tree as (
select *
from test
where childid = .... --<< this is the START WITH part
union all
select child.*
from test child
join tree parent ON child.parentid = parent.childid and child.recordstatus = 1 --<< this is the CONNECT BY part
)
select *
from tree
如果您还想将 recordstatus = 1
条件应用于递归开始,我不是 100%。
Oracle不符合这里的标准,不允许使用recursive
关键字。
所以需要从上面的查询中去掉recursive
(SQL服务器也是如此)
有关递归通用 table 表达式(在 Oracle 中称为 "subquery factoring")的更多详细信息,请参阅手册:
https://docs.oracle.com/database/121/SQLRF/statements_10002.htm#SQLRF55268