sql >> Database >  >> RDS >> Oracle

Een opgeslagen functie aanroepen (die een array van een door de gebruiker gedefinieerd type retourneert) in oracle via een databaselink

Wat je probeert is de juiste syntaxis voor zover ik weet, maar in ieder geval zou het niet werken omdat het retourtype door de gebruiker is gedefinieerd, zoals je vermoedt.

Hier is een voorbeeld met een ingebouwde pijplijnfunctie. Lokaal bellen werkt natuurlijk:

SELECT * FROM TABLE(dbms_xplan.display_cursor('a',1,'ALL'));

Retourneren:

SQL_ID: a, child number: 1 cannot be found 

Het aanroepen via een databaselink:

SELECT * FROM TABLE([email protected]('a',1,'ALL'));

mislukt met deze fout:

ORA-30626: function/procedure parameters of remote object types are not supported

Mogelijk krijgt u de ORA-904 omdat de link naar een specifiek schema gaat dat geen toegang heeft tot het pakket. Maar in ieder geval zal dit niet werken, zelfs niet als je een identiek type met dezelfde naam definieert in je lokale schema, omdat ze nog steeds niet hetzelfde type zijn vanuit het oogpunt van Oracle.

U kunt natuurlijk op afstand een weergave opvragen, dus als er een goed gedefinieerde set mogelijke parameters is, kunt u één weergave maken voor elke parametercombinatie en die vervolgens opvragen, bijvoorbeeld:

CREATE VIEW display_cursor_a_1_all AS
  SELECT * FROM TABLE(dbms_xplan.display_cursor('a',1,'ALL'))
  ;

Als het bereik van mogelijke parameterwaarden te groot is, kunt u een procedure maken die de benodigde weergave dynamisch maakt op basis van een willekeurige set parameters. Dan heb je elke keer dat je de query wilt uitvoeren een proces in twee stappen:

EXECUTE  [email protected](parameters)

SELECT * FROM [email protected];

Je moet dan bedenken of meerdere sessies dit parallel kunnen noemen en zo ja, hoe je kunt voorkomen dat ze op elkaar gaan staan.




  1. Multi-cloudimplementatie voor MariaDB-replicatie met WireGuard

  2. Hoe MapReduce werkt in Hadoop

  3. Hibernate 5:- org.hibernate.MappingException:onbekende entiteit

  4. Belangrijkste veelvoorkomende problemen met MHA en hoe u ze kunt oplossen