0

我正在处理表格 6i。我想case在游标中使用表达式。但是代码无法编译。

Forms 6i 是否不支持光标中的 case 表达式?有没有其他方法可以在 Forms 中编写 case 表达式?

4

2 回答 2

3

在我能想到的几乎所有情况下,您都可以使用嵌套decode的 s 而不是case.

代替

 select case when a=1 then 'foo'
             when b>2 then 'bar'
             else 'foobar' end
   from xyz;

你可以写

 select decode(a,1,        'foo',
        decode(sign(b-2),1,'bar',
                           'foobar')) from xyz;

另一种可能更优雅的可能性是创建一个数据库视图并在表单中使用它,因此表单 6i 永远不会看到case.

于 2010-09-09T07:36:57.507 回答
2

这是因为 Forms 6i 中使用的 pl/sql 引擎是“旧的”,并且CASE在开发时不知道语句。(我记得,服务器端 pl/sql 只CASE在 Oracle 9i 中引入了语句)

我没有表单生成器 9i 的副本,因此无法对该版本发表评论,但CASE在 Forms 10g 及更高版本中提供了语句。

于 2010-09-09T07:30:10.780 回答