Obwohl Sie rund um das reservierte Wort Problem bekommen In Ihrem Anruf, indem Sie den Namen in doppelte Anführungszeichen einschließen, wie @ AvrajitRoy vorgeschlagen, dh ... "NUMBER"=>1) = 'TRUE'...
, erreichen Sie nicht wirklich viel. Oracle lässt Sie zwar namentlich auf die Parameter verweisen, tut aber nichts mit diesen Informationen.
MDSYS.SDO_NN
ist ein spatial operator, kein direkter Aufruf einer Funktion. Es gibt eine Funktion, die es sichert - Sie können aus den Schemaskripten für MDSYS sehen, dass es tatsächlich prtv_idx.nn
aufruft - aber die Namen der formalen Parameter dieser Funktion sind nicht relevant. Mit etwas graben können Sie sehen, dass diese tatsächlich geom
, , mask
usw. genannt werden, und es gibt keinen einen number
genannt (und Sie können einen formalen Parameter number
nicht haben, sogar zitierend es, so weit ich erzählen kann) .
Die formalen Parameter für den Operator sind nicht benannt und werden effektiv positionell übergeben. Sie können ein Argument nicht überspringen, indem Sie die anderen benennen, wie dies bei einer Funktion/Prozedur mit Argumenten der Fall ist, die Standardwerte haben.
Das bedeutet, dass Sie die Parameter in Ihrem Anruf beliebig aufrufen können; Ändern Sie die Namen der ersten drei Parameter in Ihrem Anruf zu etwas zufällig wird es nicht aufhören zu arbeiten.
Es bedeutet auch, sie in den Anruf zu nennen ist ein wenig sinnlos, aber wenn Sie nur versuchen, den Anruf zu dokumentieren, dann können Sie einen anderen aussagekräftigen Namen als "Nummer" verwenden, wenn Sie es nicht zitieren möchten .
ist der Parametername 'Nummer'? ist es nicht ein reserviertes Wort? – pablomatico
Ja. Kann ich benannte Parameter mit reservierten Wörtern verwenden? – Steef