Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Memanggil fungsi tersimpan (yang mengembalikan array tipe yang ditentukan pengguna) di oracle di seluruh tautan basis data

Apa yang Anda coba adalah sintaks yang benar sejauh yang saya tahu, tetapi bagaimanapun juga itu tidak akan berhasil karena tipe yang dikembalikan ditentukan oleh pengguna, seperti yang Anda duga.

Berikut adalah contoh dengan fungsi pipelined bawaan. Menyebutnya secara lokal berfungsi, tentu saja:

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

Pengembalian:

SQL_ID: a, child number: 1 cannot be found 

Memanggilnya melalui tautan basis data:

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

gagal dengan kesalahan ini:

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

Mungkin Anda mendapatkan ORA-904 karena tautannya menuju ke skema tertentu yang tidak memiliki akses ke paket. Tetapi bagaimanapun juga, ini tidak akan berhasil, bahkan jika Anda mendefinisikan tipe yang identik dengan nama yang sama di skema lokal Anda, karena mereka masih bukan tipe yang sama dari sudut pandang Oracle.

Anda tentu saja dapat membuat kueri tampilan dari jarak jauh, jadi jika ada kumpulan parameter yang mungkin, Anda dapat membuat satu tampilan untuk setiap kombinasi parameter dan kemudian kueri itu, mis.:

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

Jika rentang nilai parameter yang mungkin terlalu besar, Anda dapat membuat prosedur yang membuat tampilan yang diperlukan secara dinamis dengan serangkaian parameter apa pun. Kemudian Anda memiliki proses dua langkah setiap kali Anda ingin menjalankan kueri:

EXECUTE  [email protected](parameters)

SELECT * FROM [email protected];

Anda kemudian harus memikirkan apakah beberapa sesi dapat memanggil ini secara paralel dan jika demikian, bagaimana mencegahnya saling menginjak.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. INSERT dengan ORDER di Oracle

  2. Bagaimana menemukan dependensi di dalam paket Oracle?

  3. Bagaimana cara memilih 1 teratas dan diurutkan berdasarkan tanggal di Oracle SQL?

  4. Tipe data Oracle JDBC dan Oracle CHAR

  5. CONNECT BY atau kueri hierarkis di RDBMS selain Oracle