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

Bagaimana cara memilih dari Jenis Daftar Catatan yang Dikumpulkan Secara Massal?

Masalah Anda sebenarnya adalah kesalahan PLS-00642, bukan ORA-22905. Pada dasarnya Anda tidak dapat menggunakan tipe koleksi lokal dalam pernyataan SQL. Oleh karena itu, solusinya adalah mendefinisikan tipe Anda di tingkat skema. Saat mendefinisikan tipe dengan cara ini, kita tidak dapat menggunakan sintaks %TYPE, dan sebaliknya harus mendefinisikan kolom secara eksplisit (Mendapatkan kesalahan PLS-00201 saat membuat tipe di oracle ) yaitu

create or replace type rec_type as object (
  COLUMN_1 integer,
  COLUMN_2 varchar2(128)
);

create or replace type tab_type as table of rec_type;

Anda kemudian perlu secara eksplisit mengonversi nilai menjadi jenis yang relevan untuk melakukan pengumpulan massal seperti yang disebutkan di sini:ORA-00947 Nilai tidak cukup saat mendeklarasikan tipe secara global .

Oleh karena itu, prosedur Anda akan terlihat seperti ini:

PROCEDURE MYPROC((PARAMS))AS
  TABLE_1 TAB_TYPE;
  lCount  integer;
BEGIN

  SELECT  REC_TYPE(COLUMN_A, COLUMN_B)
  BULK COLLECT INTO TABLE_1 
  FROM  TABLE_A;

  SELECT COUNT(*) INTO lCount FROM TABLE(TABLE_1);
END MYPROC;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menghapus Karakter sebelum Dash

  2. Menggabungkan data dari kursor menjadi satu

  3. Bagaimana menjalankan skrip sql dari prosedur pl sql

  4. Pernyataan DDL dalam PL/SQL?

  5. Tampilkan catatan dari dua tabel secara berdampingan yang hanya cocok dengan beberapa bidang