我得到了一個選擇語句工作(沒有語法錯誤,並返回所需的結果),但當我嘗試在視圖中使用相同的select語句時出現錯誤。我認爲它與「=>」有關,以命名參數。我可以使用在視圖中使用「=>」語法參數的函數嗎?
select SDO_UTIL.AFFINETRANSFORMS(
geometry => STRTS.GEOMETRY,
translation => 'FALSE', tx => 0.0, ty => 0.0, tz => 0.0,
scaling => 'TRUE', psc1 =>
MDSYS.SDO_GEOMETRY(3001, NULL, SDO_POINT_TYPE(0, 0, 0), NULL, NULL),
sx => 0.8, sy => 0.8, sz => 0.8,
rotation => 'FALSE', p1 => NULL,
line1 => NULL, angle => 10.0, dir => 2,
shearing => 'FALSE', shxy => 0.0,
shyx => 0.0, shxz => 0.0, shzx => 0.0, shyz => 0.0, shzy => 0.0,
reflection => 'FALSE', pref => NULL, lineR => NULL, dirR => 0,
planeR => 'FALSE', n => NULL, bigD => NULL) AS GEOMETRY
FROM (
SELECT
MDSYS.SDO_GEOMETRY(3002, NULL, NULL,
SDO_ELEM_INFO_ARRAY(1, 2, 1),
SDO_ORDINATE_ARRAY(-90, 30, 0, -90, 30, 0))
as GEOMETRY
FROM DUAL) STRTS
我簡化了聲明,只使用了雙重使其更容易重現。我有一個線性幾何圖形的表格,我將使用它來代替「SELECT ... FROM DUAL」,並用一種方法從線條中拉出一個點用於psc1。
使用的SQLDeveloper的測試語法時,我得到的錯誤是
Error(s) parsing SQL: Unexpected token at 45 near =>.
第一個「=>」是45個字符到字符串,所以我想,這裏還有一些關於在創建視圖中使用它無效。
我很確定我可以通過創建一個不使用此「=>」語法的函數來解決此問題,但希望有一種方法可以直接從創建視圖調用此oracle函數。
編輯:所以它似乎sqldeveloper/sqlplus支持像命名參數的東西。我添加了有關命名參數(/ * named_param => * /)的註釋以停止使用命名參數語法。現在它只是一個「錯誤的數字或類型的參數」錯誤。不幸的是,我將所有參數按照Oracle在線文檔(從http://docs.oracle.com/cd/B28359_01/appdev.111/b28400/sdo_util.htm#BJEGCCDF)中顯示的順序排列。所以我想這成爲如何找到我的函數參數的正確順序的問題。
這是正確的,除了可能sqldeveloper仍然有一些使用命名參數創建視圖對話框的問題。我將相同的文本放入一個sql文件並從sqlplus中執行它,並最終能夠添加視圖。謝謝。 – jmc 2011-12-13 23:48:53