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

Oracle:Pilih Dari Tipe Data Rekam

Tipe data record adalah tipe data PL/SQL. SQL tidak tahu tentang itu. Itu mungkin mengapa Anda mendapatkan kesalahan. Lihat contoh ini:

SQL> create package mypkg
  2  as
  3    type myrec is record
  4    ( id int
  5    , name varchar2(10)
  6    );
  7    function f return myrec;
  8  end mypkg;
  9  /

Package created.

SQL> create package body mypkg
  2  as
  3    function f return myrec
  4    is
  5      r myrec;
  6    begin
  7      r.id := 1;
  8      r.name := 'test';
  9      return r;
 10    end f;
 11  end mypkg;
 12  /

Package body created.

SQL> desc mypkg
FUNCTION F RETURNS RECORD
   ID                           NUMBER(38)              OUT
   NAME                         VARCHAR2(10)            OUT

SQL> select mypkg.f from dual
  2  /
select mypkg.f from dual
       *
ERROR at line 1:
ORA-00902: invalid datatype

Kesalahan dalam SQL yang saya maksud. Anda dapat memanggilnya dari PL/SQL:

SQL> declare
  2    r mypkg.myrec;
  3  begin
  4    r := mypkg.f;
  5    dbms_output.put_line(r.id);
  6    dbms_output.put_line(r.name);
  7  end;
  8  /
1
test

PL/SQL procedure successfully completed.

Jika Anda ingin menggunakan fungsi dalam SQL, Anda dapat membuat tipe objek SQL. Perhatikan bahwa memanggil fungsi Anda langsung dari C# terlihat jauh lebih disukai daripada bersikeras menggunakan SQL untuk melakukan ini. Tapi sebagai catatan:

SQL> drop package mypkg
  2  /

Package dropped.

SQL> create type myobj is object
  2  ( id int
  3  , name varchar2(10)
  4  );
  5  /

Type created.

SQL> create package mypkg
  2  as
  3    function f return myobj;
  4  end mypkg;
  5  /

Package created.

SQL> create package body mypkg
  2  as
  3    function f return myobj
  4    is
  5    begin
  6      return myobj(1,'test');
  7    end f;
  8  end mypkg;
  9  /

Package body created.

SQL> select mypkg.f from dual
  2  /

F(ID, NAME)
--------------------------------------------------------------
MYOBJ(1, 'test')

1 row selected.

Salam, Rob.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Membuat Aplikasi Java di Oracle JDeveloper, Bagian 2

  2. JDBC ResultSet:Saya memerlukan getDateTime, tetapi hanya ada getDate dan getTimeStamp

  3. Mereferensikan tipe yang ditentukan pengguna Oracle melalui DBLINK?

  4. Apakah Oracle mendukung pencarian teks lengkap?

  5. Mengurai tnsnames.ora dalam Visual C# 2008