O2SS0160: Pernyataan SELECT tidak dikonversi (Kesalahan)

Artikel ini menjelaskan mengapa asisten migrasi SQL Server (SSMA) untuk Oracle tidak mengonversi SELECT pernyataan dalam dua skenario yang memiliki klausul yang terbentuk ORDER BY buruk.

Latar belakang

Ada kasus ketika SSMA tidak dapat mengonversi pernyataan kompleks SELECT .

Kemungkinan solusi

Ada dua skenario, di mana SSMA tidak mengonversi pernyataan pilih dan menghasilkan pesan kesalahan.

Skenario 1: SELECT DISTINCT pernyataan digunakan dengan CONNECT BY PRIOR pernyataan dalam kueri hierarkis

Pertimbangkan contoh di bawah ini:

SELECT DISTINCT
    empno,
    MGR,
    ename
FROM
    emp
START WITH MGR = 7902
CONNECT BY PRIOR MGR = empno;

Ketika Anda mencoba mengonversi kode di atas dalam SSMA, kode tersebut menghasilkan pesan kesalahan berikut:

O2SS0160: Pernyataan SELECT tidak dikonversi

Untuk mengatasi masalah di atas, Anda dapat menggunakan ORDER BY klausul dalam kode sumber Oracle, seperti yang ditunjukkan di bawah ini:

SELECT DISTINCT
    empno,
    MGR,
    ename
FROM
    emp
START WITH MGR = 7902
CONNECT BY PRIOR MGR = empno
ORDER BY empno;

Kueri di atas harus berhasil dikonversi oleh SSMA.

Skenario 2: ORDER BY klausa mengurutkan kumpulan hasil berdasarkan dua kolom/bidang tetapi Anda hanya menentukan satu kolom/bidang dalam SELECT klausa

Pertimbangkan contoh di bawah ini:

SELECT Empno
FROM emp
ORDER BY 1, 2;

Ketika Anda mencoba mengonversi kode di atas dalam SSMA, kode tersebut menghasilkan pesan kesalahan berikut:

O2SS0160: Pernyataan SELECT tidak dikonversi

Untuk mengatasi kesalahan ini, kurangi jumlah bidang/kolom dalam ORDER BY klausa atau tambahkan bidang/kolom tambahan dalam SELECT klausa.

Berikut adalah kueri yang diperbarui di mana kami menghapus referensi kolom kedua dari ORDER BY:

SELECT Deptno
FROM emp
ORDER BY 1;

Kueri di atas harus berhasil dikonversi oleh SSMA.

  • O2SS0268: Kueri hierarkis dengan gabungan luar tidak dapat dikonversi
  • O2SS0285: Kueri hierarkis tidak dikonversi