Bir Oracle işlevinden sonuç tablosu döndürmek istiyorum. Bir imleci kullanmak en kolay olurdu, ancak bunu yapmak zorunda olduğum uygulama bir imleci dönüş değeri olarak kabul etmeyecek. Alternatif, bu işlevle birlikte ilerlemek için bir tip (bir pakete sarılmış) oluşturmaktır. Ancak, tablo türlerini döndürebilmem için birkaç tip (yazım için 4+ işlevim var) oluşturmak biraz gereksiz görünüyor. Kayıp olduğum bir alternatif var mı?Bir tablo özel bir tür veya imleç olmadan bir Oracle işlevinden nasıl döndürülür?
cevap
GÜNCELLEME: TABLE solution withou limit için ilk yorumu görün. Bir VARRAY veya kullanım
geri onlardan sorgulamak için fonksiyonunu boruhatlı.
- bir ayrıntı için this makalesinde VARRAY görünüm için. Aşağıdaki kod örneği:
CREATE OR REPLACE TYPE EMPARRAY is VARRAY(20) OF VARCHAR2(30) / CREATE OR REPLACE FUNCTION getEmpArray RETURN EMPARRAY AS l_data EmpArray := EmpArray(); CURSOR c_emp IS SELECT ename FROM EMP; BEGIN FOR emp_rec IN c_emp LOOP l_data.extend; l_data(l_data.count) := emp_rec.ename; END LOOP; RETURN l_data;
END;
için PIPELINED işlevler here. Kod örneği: bu uygulama geliştiricileri uygun olup olmadığından
create or replace function Lookups_Fn return lookups_tab pipelined is v_row lookup_row; begin for j in 1..10 loop v_row := case j when 1 then lookup_row (1, 'one') --... when 7 then lookup_row (7, 'seven') else lookup_row (j, 'other') end; pipe row (v_row); end loop; return; end Lookups_Fn; / select * from table (Lookups_Fn);
Neden bir VARRAY kullanın ve maksimum olarak 20 sonuç? Kullanım Tablosu: CREATE VEYA TİP EMPARRAY DEĞİŞTİRME VARCHAR2'DİR (30). –
BECAUSE, TYPES kullanarak AVOID kullanmaya çalıştığını söyledi. OP –
@Mark Pipelined AVOID ipuçlarını okuyun, değil mi? – FerranB
Her zaman işlevinden XML geri dönebilirler.
XML, ne yüklediğinize ve hangi sürüme kullandığınıza bağlı olarak Oracle'da bir dizi yoldan üretilebilir.
XMLTYPE, belirli bağlamlarda çok kullanışlıdır ve XMLElement, XMLAttributes, XMLAgg, vb. Yerleşik işlevleri kullanarak SQL'den üretilebilir. İstemci XMLTYPE'yi desteklemiyorsa, CLOB değerlerine kolayca dökülebilir. değil en iyi (IMO) seçeneği dbms_xmlgen paketi kullanmak olsa belki en basit
:
SQL> set serveroutput on size 1000;
SQL> exec dbms_output.put_line(dbms_xmlgen.getXML('select * from dual'));
Çıktı: Tek içinde size "Tablo" sonuç verir
<?xml version="1.0"?>
<ROWSET>
<ROW>
<DUMMY>X</DUMMY>
</ROW>
</ROWSET>
CLOB değeri.
- 1. Bir Powershell işlevinden birkaç öğe nasıl döndürülür
- 2. Python-Oracle Bir İmleç Çıkış Parametresinde Geçiş
- 3. Bir tablo döndüren bir Oracle işlevi oluşturun
- 4. Bir JavascriptConverter oluştururken, bir dizi nasıl döndürülür?
- 5. Bir TextBox.Text için özel bir tür nasıl bir veritabanını oluşturur?
- 6. Oracle PL/SQL işlevinden varolan bir tablodan kayıt nasıl geri alınır?
- 7. Özel imleç düzgün bir şekilde wpf'de nasıl kullanılır
- 8. Bir Oracle tablo değerli işlevine katılın
- 9. İyi bir PK olmadan Oracle eski tablosu: Nasıl Hazırda Bekletilir?
- 10. Genel bir tür için Jackson'da özel bir deserializer nasıl oluşturulur?
- 11. , nasıl bir değişken veya işlevinden adı dize alınır?
- 12. Java'da geçici bir int dizisi nasıl döndürülür
- 13. Bir yakut örneği yönteminden yeni bir kendilik örneği nasıl döndürülür
- 14. Hazırda bekletme: Bir tablo olmadan alanından bir sınıf yükleme
- 15. Bir tablo csv'ye veya excel biçimine nasıl dışa aktarılır
- 16. IN-deyiminde bir Oracle Tablo Türü kullanma - derleme başarısız
- 17. Bir yürütücü işlevinden bir söz döndürmek?
- 18. Oracle tablosunu DBLink olmadan bir veritabanından diğer veritabanına kopyalayın
- 19. Oracle: bir SELECT deyimi
- 20. Örneğin, belirli bir Tür veya türetilmiş türden
- 21. Ajax senaryosunda bir hata nasıl döndürülür
- 22. Bir dizeden Enum değeri nasıl döndürülür?
- 23. Oracle Error PLS-00323: alt program veya imleç bir paket belirtiminde bildirilmiş ve paket gövdesinde tanımlanmalıdır
- 24. Bir tür alan ve bir tür döndüren bir işlev yazabilir
- 25. Koşullu bir İmleç tanımlayın
- 26. Köpürme olmadan özel bir jQuery olayı tetikleme
- 27. R'de 'preprocess' işlevinden nasıl bir nesne oluşturulur?
- 28. Birim bir scala işlevinden nasıl geri dönülür?
- 29. Nullptr bir lambda işlevinden nasıl geri dönülür?
- 30. Bir imleç dikdörtgenin yerini bulun
Gereksiz mi? GRUP BY yan tümce seçim listesinde bir toplu işlev varsa, gereksiz olduğunu düşünüyorum, ama hey, ne olduğu. –
Veritabanını kullanan ne tür bir uygulama imleçleri kabul etmez ??? – kurosch