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
- Tetikleyici Anatomisi: BEFORE/AFTER, FOR EACH ROW
- PL/pgSQL İşlevlerinin Temelleri
- DO Blokları ve Anonim Kod
- Tabloları Tetikleyicilerle Denetleme