Могу ли я использовать функцию, которая принимает параметры с использованием синтаксиса "=>" в представлении? - PullRequest
4 голосов
/ 14 декабря 2011

У меня работает оператор выбора (без синтаксических ошибок и возврата желаемых результатов), но я получаю ошибку, когда пытаюсь использовать тот же оператор выбора в представлении.Я полагаю, что это как-то связано с "=>" для именования параметров.

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 символов в строке, поэтому я считаю, что в представлении создания есть что-то недопустимое.

Я довольноКонечно, я могу обойти это, создав функцию, которая не использует этот синтаксис "=>", но надеялась, что есть способ вызвать эту функцию оракула прямо из представления создания.

Редактировать: Похоже, чтоsqldeveloper / sqlplus поддерживает что-то вроде именованных параметров.Я добавил комментарии вокруг именованных параметров (/ * named_param => * /), чтобы прекратить использовать синтаксис именованных параметров.Теперь это просто ошибка "неправильное число или тип аргументов".К сожалению, я поставил все параметры в точном порядке, как показано в онлайн-документации Oracle (от http://docs.oracle.com/cd/B28359_01/appdev.111/b28400/sdo_util.htm#BJEGCCDF).Поэтому я думаю, что это становится вопросом о том, как найти правильный порядок для аргументов моей функции.

1 Ответ

5 голосов
/ 14 декабря 2011

Да, можно, но только с Oracle 11G. До этого в любом операторе SQL допускались только позиционные обозначения, которые включают определения представлений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...