'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
cevap
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.
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
@ user1941235 Bunun mümkün olduğunu düşünmüyorum. Benim şimdiki anlayışım, kayıtlar için "anydata/type" yoktur. – user272735
Plz, neyi günlüğe kaydetmek için bazı örneklerle –
ayrıntılı hazırlıyor? – Typo
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