O2SS0160:SELECT 语句未转换 (错误)
本文介绍为什么 SQL Server 迁移助手 (SSMA) for Oracle 在两个子句格式ORDER BY
不正确的情况下不转换 SELECT
语句。
背景
在某些情况下,SSMA 无法转换复杂 SELECT
语句。
可能的补救措施
有两种情况,其中 SSMA 不会转换 select 语句并生成错误消息。
方案 1: SELECT DISTINCT
语句与分层查询中的 语句一 CONNECT BY PRIOR
起使用
请考虑以下示例:
SELECT DISTINCT
empno,
MGR,
ename
FROM
emp
START WITH MGR = 7902
CONNECT BY PRIOR MGR = empno;
尝试在 SSMA 中转换上述代码时,会生成以下错误消息:
O2SS0160:SELECT 语句未转换
若要解决上述问题,可以在 Oracle 的源代码中使用 ORDER BY
子句,如下所示:
SELECT DISTINCT
empno,
MGR,
ename
FROM
emp
START WITH MGR = 7902
CONNECT BY PRIOR MGR = empno
ORDER BY empno;
SSMA 应成功转换上述查询。
方案 2: ORDER BY
子句基于两列/字段对结果集进行排序,但在 子句中 SELECT
只指定了一个列/字段
请考虑以下示例:
SELECT Empno
FROM emp
ORDER BY 1, 2;
尝试在 SSMA 中转换上述代码时,会生成以下错误消息:
O2SS0160:SELECT 语句未转换
若要解决此错误,请减少 子句中的 ORDER BY
字段/列数,或在 子句中添加 SELECT
其他字段/列。
下面是更新的查询,其中我们从 中删除了 ORDER BY
第二列引用:
SELECT Deptno
FROM emp
ORDER BY 1;
SSMA 应成功转换上述查询。
相关转换消息
- O2SS0268:无法转换具有外部联接的分层查询
- O2SS0285:未转换分层查询
反馈
https://aka.ms/ContentUserFeedback。
即将推出:在整个 2024 年,我们将逐步取消以“GitHub 问题”作为内容的反馈机制,并将其替换为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈