2010-09-09 46 views
0

我正在使用Forms 6i。我想在遊標中使用case表達式。但代碼不能編譯。光標在窗體6i

表單6i不支持遊標中的大小寫表達式嗎?有什麼其他的方法來寫在Forms中的case表達式?

回答

2

這是因爲Forms 6i中使用的pl/sql引擎是「舊」的,並且在開發時並不知道CASE語句。 (我記得,服務器端的PL/SQL只介紹CASE語句在甲骨文9i中)

我沒有表單生成器9i中的副本,以便不能在該版本發表評論,但CASE語句在窗體10克可用,以上。

+0

CASE在Oracle 8i中可用,但不能(直接)在PL/SQL程序中使用。但PL/SQL表單落後於服務器PL/SQL。我*認爲*只有10gR2可以管理CASE的表單。 – 2010-09-09 23:40:02

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

+0

+1我應該在我的回覆中加入類似你的解決方案,而不是解釋爲什麼它不起作用。 – 2010-09-09 07:47:44