光标在表单6i中

时间:2010-09-09 04:50:23

标签: sql oracle oracleforms

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

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

2 个答案:

答案 0 :(得分:3)

在我能想到的几乎所有情况下,您都可以使用嵌套的decode代替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

答案 1 :(得分:2)

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

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