«Отсутствует выражение» для выбора отдельного запроса знак ошибки
CREATE OR REPLACE FORCE EDITIONABLE VIEW "KIR_V_KAS_MASUK_KET" ("...") as
SELECT
KMH.KODE_KAS,
KA.NIS,
KA.NAMA,
KA.KELAS,
KA.JURUSAN,
SELECT DISTINCT
(SELECT PERIODE FROM KIR_KAS_MASUK_HEAD WHERE KODE_KAS=:P16_KODE_KAS) PERIODE,
TO_CHAR((SELECT SUM(PEMBAYARAN) FROM KIR_KAS_MASUK_DETAIL WHERE KODE_KAS = :P16_KODE_KAS), '999,999,999') TOTAL_PEMBAYARAN,
TO_CHAR(WAJIB_BAYAR * (SELECT COUNT(*) FROM KIR_ANGGOTA WHERE STATUS != 'TIDAK AKTIF'), '999,999,999') TOTAL_WAJIB_BAYAR,
KMD.KETERANGAN
FROM
KIR_ANGGOTA KA,
KIR_KAS_MASUK_HEAD KMH,
KIR_KAS_MASUK_DETAIL KMD
WHERE
KMD.KODE_KAS=KMH.KODE_KAS
AND
KMD.NIS=KA.NIS
/
я хотел создать таблицу просмотра с 9 столбцами, в которых 3 из этих столбцов являются чем-то, что я считаю проблемой, потому что выберите отдельный в запросе на выборку, что неверно, но я действительно не знаю решения, потому что я просто добавляю эти «выбрать отдельный запрос, не зная ничего, что делает его неправильным. Я надеюсь, что кто-то исправит меня, чтобы я мог сделать результат, который я хотел создать, используя запрос таблицы просмотра в моем приложении.
мне очень жаль, что я не знаю об этом, я исправлю это прямо сейчас
Что очевидно, так это то, что синтаксис неверен. Должно быть примерно так (упрощенно):
create view ... as
select DISTINCT kmh.kode_kas, ... --> DISTINCT goes here
(select periode from ... ) periode,
(select to_char(sum(pembayaran, '999,999,999)) from ...) total_pembayaran
from kir_anggota ka, ...
where ...
Обратите внимание, что все подзапросы (для periode
, total_pembayaran
, ...) должны возвращать одно значение. Их пункт where
должен обеспечивать это.
ОШИБКА в строке 10/45 -> TO_CHAR(WAJIB_BAYAR * (SELECT COUNT(*) FROM KIR_ANGGOTA WHERE STATUS != 'TIDAK AKTIF'), '999 999 999') TOTAL_WAJIB_BAYAR,
Есть несколько вопросов:
В части select оператора select каждый выбранный вами столбец должен возвращать скалярное значение. Невозможно выбрать 3 столбца с помощью одного оператора выбора
Невозможно ссылаться на переменные связывания (элемент страницы P16_KODE_KAS) в объекте базы данных. Это не компилируется, потому что во время компиляции значения элементов вершины не могут быть известны. Обходной путь — использовать функцию v().
Используйте соединения ansi вместо старого синтаксиса оракула. Читать легче, а ошибиться сложнее.
Вот "исправленная" версия. Все еще могут быть ошибки, поскольку у меня нет доступа к вашей среде, определениям таблиц и примерам данных.
CREATE OR REPLACE FORCE EDITIONABLE VIEW "KIR_V_KAS_MASUK_KET" ("...") as
SELECT
KMH.KODE_KAS,
KA.NIS,
KA.NAMA,
KA.KELAS,
KA.JURUSAN,
(SELECT DISTINCT PERIODE FROM KIR_KAS_MASUK_HEAD WHERE KODE_KAS=v('P16_KODE_KAS')) PERIODE,
(SELECT DISTINCT TO_CHAR((SELECT SUM(PEMBAYARAN) FROM KIR_KAS_MASUK_DETAIL WHERE KODE_KAS = v('P16_KODE_KAS')), '999,999,999') TOTAL_PEMBAYARAN,
(SELECT DISTINCT TO_CHAR(WAJIB_BAYAR * (SELECT COUNT(*) FROM KIR_ANGGOTA WHERE STATUS != 'TIDAK AKTIF'), '999,999,999') TOTAL_WAJIB_BAYAR,
KMD.KETERANGAN
FROM
KIR_ANGGOTA KA
JOIN KIR_KAS_MASUK_DETAIL KDM ON KMD.NIS=KA.NIS
JOIN KIR_KAS_MASUK_HEAD KMH ON KMD.KODE_KAS=KMH.KODE_KAS
/
При этом похоже, что это будет использоваться только на одной странице. Я бы не стал создавать представление в этом случае. Это похоже на перебор.
извините, он говорит это, но не говорит мне, какая это строка ORA-00921: неожиданный конец команды SQL
Я сказал это: «Все еще могут быть ошибки, поскольку у меня нет доступа к вашей среде, определениям таблиц и примерам данных». Удаляйте построчно и пробуйте, пока не заработает. Затем добавьте строки обратно, чтобы увидеть, где ошибка. Исправить ошибку. Базовая отладка
Пожалуйста, не публикуйте скриншоты. Любой, кто пытается вам помочь, должен перепечатать все заново. Публикуйте открытым текстом.