0Pricing
SQL Academy · Ders

DO Blokları ve Anonim Kod

DO bloklarıyla anlık PL/pgSQL çalıştırın, dolar tırnaklamasını yönetin ve tek seferlik geçişler için DO bloklarını kullanın.

DO Blokları ve Anonim Kod, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Academy kursu toplamda 4 dersten oluşur.

DO Bloğu Nedir?

DO bloğu, adlandırılmış bir işlev tanımlamadan PL/pgSQL çalıştırmanızı sağlar. Tek seferlik veri taşımaları ve geçici betikler için idealdir.

Temel DO Bloğu

En küçük söz dizimi:

DO $$
BEGIN
  RAISE NOTICE 'Hello from PL/pgSQL';
END;
$$ LANGUAGE plpgsql;

-- The language defaults to plpgsql, so you can omit it:
DO $$ BEGIN RAISE NOTICE 'Hi'; END $$;

Dolarla Tırnaklama

$$ sınırlayıcısı, tek tırnakları kaçırma gereğini ortadan kaldırır. İç içe kod için bir etiket kullanabilirsiniz:

DO $outer$
BEGIN
  EXECUTE $inner$ SELECT 'embedded \'quotes\'' $inner$;
END;
$outer$;

Koşullu DDL

Yalnızca mevcut değilse bir sütun ekleyin:

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_name='users' AND column_name='last_login'
  ) THEN
    ALTER TABLE users ADD COLUMN last_login TIMESTAMPTZ;
  END IF;
END $$;

Toplu Taşıma için Döngüler

Devasa bir tabloyu toplu olarak güncelleyin:

DO $$
DECLARE
  rows_updated INT;
BEGIN
  LOOP
    UPDATE users SET tier = compute_tier(...)
    WHERE id IN (
      SELECT id FROM users WHERE tier IS NULL LIMIT 10000
    );
    GET DIAGNOSTICS rows_updated = ROW_COUNT;
    EXIT WHEN rows_updated = 0;
    COMMIT;
  END LOOP;
END $$;

EXECUTE ile Dinamik SQL

format() ve EXECUTE ile SQL dizelerini güvenli bir şekilde oluşturun:

DO $$
DECLARE
  tbl TEXT;
BEGIN
  FOR tbl IN SELECT tablename FROM pg_tables WHERE schemaname='public' LOOP
    EXECUTE format('ANALYZE %I;', tbl);
  END LOOP;
END $$;

DO İçinde İşlem Denetimi

Daha eski PG sürümlerinde: bir DO bloğu tek bir örtük işlem içinde çalışır. PG 11 ve sonraki sürümler, yordamlar içinde (CALL ile) COMMIT/ROLLBACK kullanımına izin verir ancak DO içinde izin vermez. COMMIT içeren toplu veri taşımaları için bir yordam kullanın.

Yordamlar ve DO

  • DO — anonimdir, bir kez çalıştırılır, mevcut işlem içinde yürütülür
  • PROCEDURE — adlandırılmıştır, COMMIT/ROLLBACK destekler, CALL ile çağrılır
CREATE PROCEDURE migrate_users() LANGUAGE plpgsql AS $$
BEGIN
  -- can COMMIT here
END $$;

CALL migrate_users();

Hata İşleme

EXCEPTION blokları, adlandırılmış işlevlerdekiyle aynı şekilde çalışır:

DO $$
BEGIN
  ...
EXCEPTION
  WHEN OTHERS THEN
    RAISE NOTICE 'failed: %', SQLERRM;
END $$;

Tekrarlanan Görevler için DO Kullanmayın

Aynı mantığı birden fazla kez çalıştıracaksanız bir işlev veya yordam tanımlayın. DO, tek seferlik işlemler içindir.

Taşımalarda DO Kullanın

Çoğu taşıma aracı (Flyway, Sqitch) düz SQL çalıştırır. DO blokları, ayrı işlevler oluşturmadan denetim akışını gömmenizi sağlar.

Özet

DO blokları, geçici PL/pgSQL kodudur.

  • Tek bir anonim çalıştırma
  • Koşullu DDL ve veri taşımaları için idealdir
  • Dolarla tırnaklamaya dikkat edin
  • İşlem denetimi için PROCEDURE kullanın

Hızlı Kontrol

Adlandırılmış bir işlev oluşturmadan, taşıma sırasında PL/pgSQL kodunu bir kez çalıştırmak istiyorsunuz. Hangi yapıyı kullanmalısınız?

Sıkça Sorulan Sorular

“DO Blokları ve Anonim Kod” dersi ücretsiz mi?

Evet — “DO Blokları ve Anonim Kod” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Academy kursu toplamda 4 dersten oluşur.

“DO Blokları ve Anonim Kod” dersinde ne öğreneceğim?

DO bloklarıyla anlık PL/pgSQL çalıştırın, dolar tırnaklamasını yönetin ve tek seferlik geçişler için DO bloklarını kullanın. SQL Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

SQL Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te SQL Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“DO Blokları ve Anonim Kod” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu SQL Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her SQL Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Tetikleyici Anatomisi: BEFORE/AFTER, FOR EACH ROW
  2. PL/pgSQL İşlevlerinin Temelleri
  3. DO Blokları ve Anonim Kod
  4. Tabloları Tetikleyicilerle Denetleme
← SQL Academy Sayfasına Dön