首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Oracle Apex中创建表视图

在Oracle Apex中创建表视图
EN

Stack Overflow用户
提问于 2022-11-18 10:45:21
回答 2查看 44关注 0票数 0

用于选择不同查询错误标志的“错误表达式”

代码语言:javascript
复制
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列是问题所在,因为在select查询中选择distinct是错误的,但我真的不知道解决方案,因为我只是添加那些'select distinct‘查询,而不知道任何使它出错的东西。我希望有人纠正我,这样我就可以在我的应用程序中制作使用视图表查询创建的结果。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-11-18 14:06:55

有几个问题:

  • 在select语句的select部分中,您选择的每个列都需要返回一个标量值。不可能用一个select语句来选择3列
  • 不可能在数据库对象中引用绑定变量(页面项P16_KODE_KAS)。这不能编译,因为在编译时,无法知道顶点项的值。解决方法是使用v()函数。
  • 使用ansi联接而不是旧的oracle语法。读起来容易,做错事也难。

这是“固定”版本。可能仍然存在错误,因为我无法访问您的环境,也无法访问表定义和示例数据。

代码语言:javascript
复制
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
/

话虽如此,看来这只会在一页中使用。在这种情况下,我不会创建一个视图。看上去太过分了。

票数 0
EN

Stack Overflow用户

发布于 2022-11-18 10:53:16

显而易见的是,语法是错误的。应该是这样的(简化):

代码语言:javascript
复制
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 ...

注意,所有子查询(对于periodetotal_pembayaran、.)必须返回单个值。他们的where条款必须强制执行。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74488465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档