2016-04-14 31 views
-1

'daki tüm kayıtları okuyun Herhangi bir PL kayıt türünü parametre olarak kabul edebilecek bir işlev oluşturmak mümkün mü? Bu, kayıt için yararlı olacaktır. Daha önce LCR'lerle birlikte oynadım ve LCR yapısı okunabilir ve nereden geldiğine bakılmaksızın değerler çıkarılabilir.oracle pl/sql

+0

Plz, neyi günlüğe kaydetmek için bazı örneklerle –

+0

ayrıntılı hazırlıyor? – Typo

+0

Kayıt tipi değerlerini kaydetme. Herhangi bir kayıt tipini kabul edip, kayıt tipini bildirmeden ve kayıt tipi yapısını ve içerdiği türleri önceden bilmeden bu kayıt tipindeki okuma değerlerini okuyabilecek bir prosedür yazabilir misiniz? – user1941235

cevap

0

Hayır yapamazsınız. Çözüm, bir kaydı bir dizeye dönüştüren bir alt program oluşturmaktır. Evet, zahmetli ve ayrıntılı ama bazen PL/SQL.

declare 
    type foo_t is record (
    a number 
    ,b varchar2(32767) 
); 
function to_str(r in foo_t) return varchar2 is 
begin 
    return '((a = ' || r.a || ')(b = ' || r.b || '))'; 
end; 
begin 
    declare 
    v_foo foo_t; 
    begin 
    v_foo.a := 42; 
    v_foo.b := 'lorem ipsum'; 
    dbms_output.put_line(to_str(v_foo)); 
    end; 
end; 
/

Zeki iseniz yeterince sizin için tüm bu to_str altprogramların yazan bir kod jeneratör yazabilirsiniz.

+0

Sanırım bu gibi bir şey yapabilirim: p_write_log ('t_record_type', l_record_type), ilk parametre türün adı, ikincisi de anydata veya anytype ile eşlenen gerçek kayıt tipi? ve sonra dba_objects'i sorgulayabilirim, bu türü bulup, dönüşümü yapan dinamik sql'leri birleştirebilirim. – user1941235

+0

@ user1941235 Bunun mümkün olduğunu düşünmüyorum. Benim şimdiki anlayışım, kayıtlar için "anydata/type" yoktur. – user272735