SQL Developer'da bir değişkenin değerini yazdırma


102

Anonim bir blok içindeki belirli bir değişkenin değerini yazdırmak istedim. Oracle SQL Developer kullanıyorum. Kullanmayı denedim dbms_output.put_line. Ama bu çalışmıyor. Kullandığım kod aşağıda gösterilmiştir.

SET SERVEROUTPUT ON

DECLARE

  CTABLE USER_OBJECTS.OBJECT_NAME%TYPE;
  CCOLUMN ALL_TAB_COLS.COLUMN_NAME%TYPE;
  V_ALL_COLS VARCHAR2(500);

  CURSOR CURSOR_TABLE
    IS
    SELECT OBJECT_NAME 
    FROM USER_OBJECTS 
    WHERE OBJECT_TYPE='TABLE'
    AND OBJECT_NAME LIKE 'tb_prm_%';

  CURSOR CURSOR_COLUMNS (V_TABLE_NAME IN VARCHAR2)
    IS
    SELECT COLUMN_NAME
    FROM ALL_TAB_COLS
    WHERE TABLE_NAME = V_TABLE_NAME;

BEGIN

  OPEN CURSOR_TABLE;

  LOOP
    FETCH CURSOR_TABLE INTO CTABLE;
    EXIT WHEN CURSOR_TABLE%NOTFOUND;

    OPEN CURSOR_COLUMNS (CTABLE);

    V_ALL_COLS := NULL;

    LOOP
      FETCH CURSOR_COLUMNS INTO CCOLUMN;
      V_ALL_COLS := V_ALL_COLS || CCOLUMN;
      IF CURSOR_COLUMNS%FOUND THEN
        V_ALL_COLS := V_ALL_COLS || ', ';
      ELSE
        EXIT;
      END IF;
    END LOOP;

    DBMS_OUTPUT.PUT_LINE(V_ALL_COLS);

  END LOOP;
  CLOSE CURSOR_TABLE;

END;

Ve çıktıyı sadece olarak alıyorum anonymous block completed.


çıktı programın sonunda / sonlandırıldığında temizlenir, bu şekilde çalışır. Koşarken görüntülemek için yıkayamazsınız. Bir program çalışırken neler olduğunu görmek için günlük tablolarına (otonom işlem) bakın
tbone

Neden yerleşik hata ayıklayıcıyı kullanıp bloğunuzda ilerlemiyorsunuz. Tüm değişkenlerin durumunu gösterir.
Wolf

5
SUNUCU ÇIKIŞINI AÇIN; - noktalı virgül ekleyin, TÜMÜ seçin ve geliştiricide çalıştırın, benim için iyi çalışıyor,
Praveenkumar_V

Yanıtlar:


203

Dbms_output'u açmanız gerekiyor. Oracle SQL Developer'da:

  1. DBMS Çıkışı penceresini gösterin (Görünüm-> DBMS Çıkışı).
  2. Dbms Çıkışı penceresinin üstündeki "+" düğmesine basın ve ardından açılan iletişim kutusunda açık bir veritabanı bağlantısı seçin.

SQL * Plus'ta:

 SET SERVEROUTPUT ON

1.5.5 sürümünde, Görünüm altında bu seçeneğe sahip görünmüyorum. Bağlantılar, Dosyalar, Raporlar ... Durum Çubuğu, Araç Çubukları, Yenileme var, ancak DBMS Çıkışı yok. Tercihler altında birçok şey var, ancak yine de çıktı için bir seçenek göremiyorum.
fırfır

1
@ruffin: v1.5.5 3 yaşında. V3.0 kullanıyorum ve mevcut sürüm v3.1 gibi görünüyor.
Klas Lindbäck

/ nods 1.5.5'te takılıp kaldık - cevabı elinizde olsaydı, alırdım, ama aksi halde nps. Teşekkürler!
52'de ruffin

Sql dosyasının ilk satırında "SET SERVEROUTPUT ON" seçeneğini ayarladım.
Samih A

Çok teşekkür ederim!
Amazigh.Ca

18

DBMS_OUTPUT pencere bölmesini açıkça açtığınızda, SQL Developer yalnızca DBMS_OUTPUT metnini çıkarıyor gibi görünüyor.

Bölmeyi çağırmak için (Menü) GÖRÜNÜM -> Dbms_output seçeneğine gidin.

Bağlantınız için çıktıyı etkinleştirmek üzere Yeşil Artı işaretine tıklayın ve ardından kodu çalıştırın.

DÜZENLEME: Beklediğiniz çıktı miktarına göre tampon boyutunu ayarlamayı unutmayın.


6

Her şeyden önce sunucu çıkışı yapın

  1. SET SERVEROUTPUT on sonra

  2. DBMS Çıkışı penceresine gidin (Görünüm-> DBMS Çıkışı)

  3. ardından sunucuya bağlanmak için Ctrl+ 'ya basınN


3

2 seçenek vardır:

set serveroutput on format wrapped;

veya

'Görünüm' menüsünü açın ve 'dbms çıkışı'nı tıklayın. Çalışma sayfasının altında bir dbms çıktı penceresi almalısınız. Daha sonra bağlantıyı eklemeniz gerekir (bazı nedenlerden dolayı bu otomatik olarak yapılmaz).


1

1) Görünüm menüsüne gidin.
2) DBMS_OUTPUT menü öğesini seçin.
3) Ctrl+ ' Nya basın ve bağlantı düzenleyiciyi seçin.
4) SET SERVEROUTPUT ON komutunu yürütün.
5) Ardından PL / SQL Komut Dosyanızı çalıştırın.

görüntü açıklamasını buraya girin görüntü açıklamasını buraya girin


0
DECLARE

  CTABLE USER_OBJECTS.OBJECT_NAME%TYPE;
  CCOLUMN ALL_TAB_COLS.COLUMN_NAME%TYPE;
  V_ALL_COLS VARCHAR2(5000);

  CURSOR CURSOR_TABLE
    IS
    SELECT OBJECT_NAME 
    FROM USER_OBJECTS 
    WHERE OBJECT_TYPE='TABLE'
    AND OBJECT_NAME LIKE 'STG%';

  CURSOR CURSOR_COLUMNS (V_TABLE_NAME IN VARCHAR2)
    IS
    SELECT COLUMN_NAME
    FROM ALL_TAB_COLS
    WHERE TABLE_NAME = V_TABLE_NAME;

BEGIN

  OPEN CURSOR_TABLE;
  LOOP
    FETCH CURSOR_TABLE INTO CTABLE;

    OPEN CURSOR_COLUMNS (CTABLE);
    V_ALL_COLS := NULL;
    LOOP

      FETCH CURSOR_COLUMNS INTO CCOLUMN;
      V_ALL_COLS := V_ALL_COLS || CCOLUMN;
      IF CURSOR_COLUMNS%FOUND THEN
        V_ALL_COLS := V_ALL_COLS || ', ';
      ELSE
        EXIT;
      END IF;
    END LOOP;
   close CURSOR_COLUMNS ;
    DBMS_OUTPUT.PUT_LINE(V_ALL_COLS);
    EXIT WHEN CURSOR_TABLE%NOTFOUND;
  END LOOP;`enter code here`
  CLOSE CURSOR_TABLE;

END;

İkinci imlecin Yakınını ekledim. Çalışıyor ve çıktı alıyor ...


-1

menüden Görünüm -> DBMS Çıkışı'nı seçin ve


-1

DBMS Çıkışı penceresine gidin (Görünüm-> DBMS Çıkışı).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.