我可以在视图中使用一个使用"=>"语法参数的函数吗?

jmc*_*jmc 4 oracle plsql

我有一个select语句工作(没有语法错误并返回所需的结果),但是当我尝试在视图中使用相同的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
Run Code Online (Sandbox Code Playgroud)

我将语句简化为仅使用双重来使其更容易重现.我将使用线性几何形状的表,而不是"SELECT ... FROM DUAL",以及从线上拉出一个点以用于psc1的方法.

我使用sqldeveloper的测试语法时得到的错误是

Error(s) parsing SQL: Unexpected token at 45 near =>.
Run Code Online (Sandbox Code Playgroud)

第一个"=>"是字符串中的45个字符,因此我认为在创建视图中使用它只是一些无效的东西.

我很确定我可以通过创建一个不使用这个"=>"语法的函数来解决这个问题,但希望有一种方法可以直接从create视图调用这个oracle函数.

编辑:所以看来sqldeveloper/sqlplus支持命名参数之类的东西.我在命名参数(/*named_pa​​ram =>*/)周围添加了注释,以停止使用命名参数语法.现在它只是一个"错误的数字或类型的参数"错误.不幸的是,我将所有参数按照Oracle在线文档中显示的确切顺序排列(来自http://docs.oracle.com/cd/B28359_01/appdev.111/b28400/sdo_util.htm#BJEGCCDF).所以我想这就成了如何为函数参数找到正确顺序的问题.

Ton*_*ews 5

是的,你可以,但仅限Oracle 7G.在此之前,任何SQL语句中都只允许使用位置表示法,其中包括视图定义.