Oracle apex 在Oracle Application Express(ApEx)3.0中添加列时选择*中断

Oracle apex 在Oracle Application Express(ApEx)3.0中添加列时选择*中断,oracle-apex,Oracle Apex,当我将报表区域的SQL定义为SELECT*FROM some_table时,在将新列添加到某个_table之前,一切都正常-然后它会因ORAXX No data found错误而中断。这很容易修正,因为即使不做任何更改,也足以再次对区域应用更改。但是,它不利于健壮的应用程序 是否有一些参数组合允许SELECT*不与新列中断?对新列应用任何默认格式或标题就足够了 我知道我可以从data dictionary构造列列表,然后将所有内容连接到SELECT语句中进行计算,但这似乎很不雅观。通常不建议使用

当我将报表区域的SQL定义为SELECT*FROM some_table时,在将新列添加到某个_table之前,一切都正常-然后它会因ORAXX No data found错误而中断。这很容易修正,因为即使不做任何更改,也足以再次对区域应用更改。但是,它不利于健壮的应用程序

是否有一些参数组合允许SELECT*不与新列中断?对新列应用任何默认格式或标题就足够了


我知道我可以从data dictionary构造列列表,然后将所有内容连接到SELECT语句中进行计算,但这似乎很不雅观。

通常不建议使用SELECT*查询,因为:

返回所有列,那么优化器就没有那么多可玩的了。 由于添加新列会更改查询结果,从而产生意外结果,因此会降低应用程序的健壮性。如果没有SELECT*,我的意思是准确地给出所需的列,添加新列对应用程序并不重要。
无论如何,请记住,为视图创建SELECT*,oracle创建视图替换所有列的*,可能是APPEX在做同样的事情

通常不建议使用SELECT*查询,因为:

返回所有列,那么优化器就没有那么多可玩的了。 由于添加新列会更改查询结果,从而产生意外结果,因此会降低应用程序的健壮性。如果没有SELECT*,我的意思是准确地给出所需的列,添加新列对应用程序并不重要。
无论如何,请记住,为视图创建SELECT*,oracle创建视图替换所有列的*,可能是APPEX在做同样的事情

目前,我假定您的区域源已设置为使用查询特定的列名并验证查询。这意味着为查询中的每一列显式定义了一个报表列,并且SQL应该是静态的

如果将区域源更改为仅在运行时使用通用列名解析查询,则在添加新列后,它仍将工作,列标题默认为列名


还有一个属性“通用报表列的最大数量”默认为60,并且必须设置为足够大的值,以容纳将来添加到表中的任何列。

目前,我假定您的区域源已设置为使用查询特定的列名并验证查询。这意味着为查询中的每一列显式定义了一个报表列,并且SQL应该是静态的

如果将区域源更改为仅在运行时使用通用列名解析查询,则在添加新列后,它仍将工作,列标题默认为列名


还有一个属性“通用报表列的最大数量”默认为60,并且必须设置一个足够大的值,以容纳将来添加到表中的任何列。

此报表的明确要求只是列出整个表,并且所讨论的表处于不断变化的状态,即正在积极开发中。从这个角度来看,健壮性对我来说意味着:应用程序不会破坏并列出用户想要的任何最新的列布局。是的,你是对的,因为开发过程可能需要这种查询方式。当然,每个人都会对许多问题运行SELECT*查询,而不是结束应用程序。此报告的明确要求是列出整个表,并且所讨论的表处于不断变化的状态,即正在积极开发中。从这个角度来看,健壮性对我来说意味着:应用程序不会破坏并列出用户想要的任何最新的列布局。是的,你是对的,因为开发过程可能需要这种查询方式。当然,每个人都会针对很多问题运行SELECT*查询,而不是结束应用程序。