Simpan prosedur dalam SQL. Prosedur vidalnya yang diambil. RETURN link ke prosedur yang disimpan

Jika ada prosedur berikut untuk disimpan, dan apakah saya bersalah karena memenangkan pernyataan di SQL Server?

Biarkan saya mengizinkan Anda membuat minuman dinamis, bagaimana kami dapat meningkatkan parameternya?

Manakah di antara mereka yang paling terlihat, dan mana yang terbaik, dan mana yang paling sedikit?

Lihat atau prosedur yang sedang disimpan, apakah mereka terus-menerus menghemat memori?

Apa artinya, katakanlah, bahwa pernyataan membuat tabel virtual dan prosedur membuat tabel bahan?

Berbaik hatilah, beri tahu saya tentang titik-titik itu, bau yakscho.

Solusi Mengumpulkan Dari Web "Mengapa ada perbedaan antara prosedur, tabungan, dan pajak?"

Lihat maya meja. Anda dapat mencapai jumlah tabel dalam pengajuan dan memenangkan aplikasi untuk pengiriman data, karena data ditemukan dalam satu tabel.

Prosedur untuk memilih parameter untuk fungsi yang dipilih telah disimpan ... sehingga penyisipan data atau rotasi nilai lain atau kumpulan data diperbarui.

Membuat pemberitahuan dan prosedur yang disimpan - untuk membalas informasi dari Microsoft tentang hal itu, jika dan mengapa memenangkannya.

Katakanlah saya memiliki dua tabel:

tbl_user Stovptsi: .user_id, .user_name, .user_pw

tbl_profile Stowpci: .profile_id, .user_id .profile_description

Jadi, ketika saya mencoba mengambil tabel ini BANYAK ... alih-alih itu, untuk bekerja di sql bagian CLEAR, saya akan menggunakan tampilan, misalnya:

BUAT Lihat vw_user_profile AS Pilih A.user_id, B.profile_description FROM tbl_user A kiri gabung tbl_profile B di A.user_id = b.user_id GO

Oleh karena itu, di masa depan, saya ingin meminta profile_description untuk id koristuvach ... semua yang saya butuhkan untuk merampok,

PILIH profile_description FROM vw_user_profile WHERE user_id = @ID

Kode ini dapat diubah dalam prosedur yang disimpan, misalnya:

Buat prosedur dbo.getDesc @ID int AS start SELECT profile_description FROM vw_user_profile WHERE user_id = @ID END GO

Untuk itu saya bisa telepon

Dbo.getDesc 25

dan saya menghapus deskripsi untuk ID koristuvach 25 de 25 - parameter Anda.

Jelas bahwa BAGATO lebih banyak, tetapi ide utamanya lebih sedikit.

Di belakang, Anda perlu memahami bahwa penghinaan adalah pidato yang berbeda. Penghematan prosedur lebih unggul untuk pernyataan INSERT-UPDATE-DELETE. Kiriman tersebut dibenarkan untuk pernyataan SELECT. dan Anda bersalah atas kebencian yang menang.

Anda tidak dapat mengubah data pada pemandangan.

Lihatlah: Ini adalah tabel virtual yang terdiri dari satu atau lebih baris dan kolom dari tabel basis data nyata yang berbeda. Tse template rowk_v dan stovpts_v tabel k_lkoh. Anda tidak dapat melewatkan parameter apa pun di sini.

Menyimpan prosedur: gunakan serangkaian pernyataan SQL sebelumnya, di mana Anda dapat mengedit parameter seperti data input dan menghapus data output.

Penampilan dapat ditampilkan dalam prosedur yang disimpan, tetapi prosedur yang disimpan tidak dapat ditampilkan dalam Tampilan…!

Prosedur shovischa menang jika SQL biasa saja tidak cukup. Prosedur untuk menyimpan harus diubah, siklus dan siklus prosedur lain yang disimpan. Pemrograman tse mova, bukan mova zapitіv.

    Penampilannya statis. Pikirkan mereka seolah-olah itu adalah tabel baru dengan tata letak yang sederhana, dan data di dalamnya dibuat secara spontan, dengan catatan perwakilan, yang dengannya Anda telah membuat segalanya. Seperti pada tabel SQL mana pun, Anda dapat mengurutkan dan memfilter menurut WHERE , GROUP BY dan ORDER BY .

    Tse untuk mengesampingkan fakta bahwa Anda bekerja.

    Tse untuk meletakkan di dasar data. Maaf, jalankan saja kueri dan filter hasilnya. Namun, basis data, seperti Oracle, memungkinkan Anda membuat pernyataan "terwujud", seperti di tabel utama, karena diperbarui secara otomatis saat Anda mengubah tipe data dasar.

    Perwujudan pernyataan memungkinkan Anda untuk membuat indeks di kolom pernyataan (terutama pada kolom terhitung, yang tidak ditemukan di mana pun di basis data).

    Saya tidak mengerti apa yang Anda katakan.

Perbedaan utama terletak pada kenyataan bahwa jika Anda meminta pernyataan, penunjukan dimasukkan ke dalam permintaan Anda. Prosedurnya dapat memberikan hasil, tetapi dikompilasi dan sangat cepat. Opsi kedua adalah mengindeks pemberitahuan.

SQL View adalah tabel virtual berdasarkan kueri SQL SELECT. Pengajuan diajukan untuk satu atau lebih tabel basis data atau untuk aplikasi lain. Tanda mittєvy database ini, sama seperti prosedur yang diambil, adalah sekelompok pernyataan Transact-SQL, dilipat menjadi satu rencana eksekusi.

Pereglyad adalah demonstrasi sederhana dari data yang disimpan dalam tabel basis data, seperti prosedur yang disimpan oleh sekelompok operator, yang dapat di-vicon.

Mengajukan lebih, oscillki vodobrazhae data dari tabel, tentang cara bertanya, seperti prosedur pengumpulan sql-instruksi.

Balikkan artikel ini: Meninjau prosedur yang sedang disimpan. Orang-orang yang kamu bisikkan

@Patrick benar ketika Anda mengatakan itu, yah, Anda perlu melihat makanan Anda yang lain, membuat Tampilan untuk diri Anda sendiri di memori, dan dalam tipe bera Bergabung, Data dan bahkan jika agregasi akan dipecah, Anda masih bisa mengakhiri sampai terlihat lapar.

Simpan prosedur untuk menyimpan semua pekerjaan Anda baik dengan substitusi Tabel Hash Temp, misalnya #tmpTable1, atau dalam memori @tmpTable1 untuk bantuan. Zalezhno v_d dari apa yang ingin Anda katakan.

Prosedur yang diambil mirip dengan fungsi, tetapi disebut dengan nama langsung. zamіst funktsіy, yakі sebenarnya vikoristovuyutsya di tengah permintaan.

Jelas, sebagian besar waktu tabel ada di memori, karena Anda tidak mengambil banyak uang.

Mahesh tidak benar, jika dia mengizinkan anggur, Anda tidak dapat mengubah upeti dari upeti. Ayah, lihat Patrick

BUAT Lihat vw_user_profile AS Pilih A.user_id, B.profile_description FROM tbl_user A kiri gabung tbl_profile B di A.user_id = b.user_id

Saya dapat memperbarui data ... seperti pantat, saya dapat mengetahui apakah itu cich ...

Perbarui vw_user_profile Setel profile_description="Manager" di mana user_id=4

Perbarui tbl_profile Setel profile_description="Manager" di mana user_id=4

Anda tidak dapat memasukkannya ke dalam deklarasi, karena tidak semua bidang di seluruh tabel ada, dan saya berasumsi bahwa PROFILE_ID adalah kunci utama dan tidak boleh NULL. Namun, Anda juga dapat menyisipkan INSERT di vistavu...

Saya membuat aplikasi untuk meja utama, vicorist ...

Buat View Junk seperti SELECT * view

Masukkan nilai sampah (Kode,nama) ("glyn", "Glyn Roberts"), ("Mary", "Maryann Roberts"), ("Mary", "Maryann Roberts")

HAPUS dari Junk Where ID>4

INSERT, DELETE bekerja pada titik yang sama

Jelas, Anda tidak dapat mengubah apakah bidang, apakah itu agregasi, atau apakah itu diamankan, atau apakah itu pernyataan, jika itu hanya pernyataan langsung, itu bisa diubah.

Jika Anda telah melihat lebih dari satu tabel, Anda tidak dapat menyisipkan atau melihat, tetapi jika Anda telah melihat lebih dari satu tabel, Anda dapat bersuara.

Selain menunjukkan lebih banyak komentar, saya ingin menambahkan sedikit rasa hormat tentang Views.

  1. Hadiah bisa menang untuk lipat prikhovuvannya. Tunjukkan skenario Anda sendiri, di mana 5 orang mengerjakan proyek, dan hanya satu dari mereka yang sudah menjadi tim dengan basis data, misalnya, asosiasi yang dapat dilipat. Dalam skenario seperti itu, anggur dapat dibuat, yang dapat dengan mudah diminta oleh anggota tim lainnya, dan stink shard meminta satu tabel.
  2. Keamanan Tampilan dapat dengan mudah diimplementasikan. Katakanlah kita spіvrobіtnik meja Gaji , nomor SSN. Warga tidak bersalah mencari coristuvachs, yang tidak diizinkan untuk melihat mereka. Dengan cara ini, kita dapat membuat notifikasi, seperti memilih kolom dalam tabel, sebagai tidak mengotorisasi, seperti im'ya , vіk ta dll., tanpa memberikan komentar yang bertentangan (misalnya, tentang gaji, dll., tentang perkiraan kami sebelumnya). Sekarang kita dapat melihat diperbolehkan untuk permintaan langsung ke tabel karyawan dan simpan saja untuk dibaca dari subjek. Dengan cara ini, kita dapat mewujudkan keamanan untuk membantu Tampilan.

Prosedur suara

BUAT PROSEDUR [({masuk|keluar|masuk} [,…])]
[SET HASIL DINAMIS ]
MULAI [ATOM]

AKHIR

Kata kunci
. IN (Masukan) – parameter masukan
. KELUAR (Keluaran) – parameter keluaran
. INOUT - input dan output, serta bidang (tanpa parameter)
. DYNAMIC RESULT SET Menunjukkan bahwa prosedur dapat menentukan jumlah kursor, sehingga prosedur dapat ditutup setelah prosedur dikembalikan.

Catatan
Tidak disarankan untuk mengubah banyak parameter dalam prosedur yang disimpan (misalnya, di depan sejumlah besar dan string karakter) melalui penataan ulang tumpukan. Dalam praktiknya, dialek dasar Transact-SQL, PL/SQL dan Informix menjaga konsistensi dengan standar, seperti dengan parameter bersuara dan berbeda, perubahan bersuara, serta untuk antarmuka pengguna. Microsoft merekomendasikan untuk menghentikan perkiraan berikutnya untuk mengevaluasi ukuran Cache dari prosedur yang disimpan:
\u003d (jumlah maksimum coristuvachiv kerja satu jam) * (percobaan rencana kehadiran terbesar) * 1,25. Tergantung pada rencana, sisi dapat diperluas dengan bantuan perintah: DBCC MEMUSAGE.

Prosedur Viklik

Untuk DBMS kaya, daftar prosedur yang disimpan, digunakan untuk bantuan operator:

LAKUKAN PROSEDUR [(][)]

Catatan: Prosedur penyimpanan cepat dapat disimpan dengan program, prosedur lain yang dapat disimpan, atau dalam mode interaktif.

Contoh prosedur menyuarakan

BUAT PROSEDUR Proc1 SEBAGAI // setrum prosedur
DECLARE Cur1 200 // setrum kursor
OPEN Cur1 // buka kursor
FETCH NEXT FROM Cur1 //membaca data dari kursor
SAAT @@Fetch_Status=0
MULAI
TAMBAHKAN BERIKUTNYA DARI Cur1
AKHIR
TUTUP Cur1 // tutup kursor
DEALOKASI Kur1
EXECUTE Proc1 // jalankan prosedur

Polimorfisme
Dua subprogram dengan nama yang sama dapat dibuat dalam satu skema yang sama, karena parameter kedua subprogram ini berada di dunia satu jenis satu, sehingga dapat dipisahkan. Untuk membedakan antara dua subprogram dengan nama yang sama dalam satu skema, kulitnya diberi nama alternatif dan unik (nama spesifik). Im'ya tersebut dapat diberikan, jika subprogram sedang dikembangkan. Saat memanggil subprogram untuk kehadiran sejumlah nama yang sama, penunjukan subprogram yang diperlukan dikenakan biaya untuk sedikit waktu:
. Lebih sering, semua prosedur ditetapkan dari nama yang ditetapkan, dan jika tidak ada, maka semua fungsi dari nama yang diberikan.
. Untuk analisis yang lebih dalam, subprogram ini ditinggalkan, ratusan danital tersebut dapat diistimewakan untuk vikonannya (EXECUTE).
. pilih , yakі mayut jumlah parametrіv di vіdpodіdaє jumlah argumen vikliku. Jenis data dan parameter yang ditetapkan untuk posisi tersebut ditinjau.
. Jika lebih dari satu subprogram hilang, yang dipilih adalah subprogram dengan kualifikasi terpendek.
Dalam praktik Oracle, polimorfisme diizinkan untuk fungsi yang hanya diekspos dalam paket, [dilindungi email]- Dalam skema lain, dan di Sybase dan MS SQL Server, fokus diblokir.

Vidalnya dan perubahan prosedur
Untuk prosedur jarak jauh, operator digunakan:

Untuk mengubah prosedur, operator dipilih:

MENGUBAH PROSEDUR [([{masuk|keluar|masuk}])]
MULAI [ATOM]

AKHIR

Keistimewaan prosedur vikonannya

HIBAH EKSEKUSI ON KE |PUBLIK [DENGAN PILIHAN HIBAH]

prosedur sistem
DBMS yang kaya (termasuk SQL Server) mungkin memiliki rangkaian prosedur sistem yang sama, sehingga Anda dapat mengubahnya untuk tujuan Anda sendiri.

Menyimpan prosedur

Subjek distribusi ini adalah salah satu alat yang paling penting, diperkenalkan ke pengecer dengan tambahan database InterBase untuk implementasi logika bisnis. dan mengubah jumlah kode yang diperlukan untuk menyiapkan tugas. Secara praktis mungkin untuk menyelesaikan program database tanpa mengubah prosedur yang disimpan.
Meskipun ada banyak pilihan prosedur untuk disimpan yang penting untuk sebagian besar DBMS relasional, prosedur InterBase dapat memainkan peran sebagai kumpulan data yang praktis lengkap, memungkinkan mereka untuk memutar hasil dalam kueri SQL tertentu.
Rosobniks, sering mendorong, mempelajari prosedur soberezhenia hanya yak nabir dari sql-zapitiv tertentu, yaki shit rajin rajin, dan prazuvati, nabhagato, nibalizuvati tingkat tinggi.
Jadi apa saja prosedur yang disimpan di InterBase?
Prosedur yang disimpan (CP) adalah bagian dari metadata basis data, yang dikompilasi dari subprogram aplikasi InterBase internal, yang ditulis dalam bahasa khusus, kompiler yang dimasukkan ke dalam inti server InteiBase
Menyimpan prosedur dapat dipanggil dari program klien, dari pemicu dan prosedur lain yang disimpan. Prosedur disimpan di tengah proses server dan Anda dapat memanipulasi data di database, serta mengaktifkan klien dengan cara mengklik (pemicu itu, HP, tambahan) hasil kemenangan Anda
Dasar dari kemungkinan sulit yang ditetapkan oleh HP adalah pemrograman bahasa prosedural, yang dapat dilakukan di gudangnya sendiri, seperti memodifikasi proposisi SQL yang hebat, seperti INSERT, UPDATE dan SELECT, serta organisasi analisis dan siklus. (JIKA, SAAT), serta situasi dan kesalahan Prosedur Mova yang disimpan memungkinkan penerapan algoritme yang dapat dilipat untuk bekerja dengan data, dan fokus pada pekerjaan dengan data relasional HP secara signifikan lebih ringkas untuk prosedur serupa dengan bahasa tradisional.
Perlu dicatat bahwa pemicunya menang dengan program yang sama, kejahatannya rendah fitur dan perbatasannya. Vіdmіnnostі pіdmіnnostі pіdnіzhini movi, scho vikoristovuєєtsya in trigery, vіd mivi KHP dilaporkan ditinjau di bagian "Trigeri" (bagian 1).

Contoh prosedur sederhana yang disimpan

Saatnya telah tiba untuk membuat prosedur pertama, yang disimpan, dan proses pembuatan prosedur penyimpanan. Ale untuk awal berikutnya untuk mengatakan beberapa kata tentang itu, bagaimana berlatih dengan prosedur yang disimpan. Dokumentasi InterBase merekomendasikan pembuatan prosedur untuk file tambahan dalam skrip SQL, yang akan membersihkan teks CP, saat dikirimkan ke input juru bahasa isql, dan dengan cara ini, buat modifikasi CP itu, seperti dalam SQL ini skrip pada tahap kompilasi BLR ke dalam teks prosedur BLR (tentang teks prosedur BLR lihat Rozdіl "Struktur basis data InterBase" (bagian 4)) winkle maaf, maka isql akan menunjukkan kepada Anda tentang itu, di baris mana dari SQL file skrip winkla tsya maaf. Perbaiki pengampunan dan ulangi semuanya kembali ke belakang. Tentang nagodzhennya dalam pemahaman sehari-hari kata, yaitu tentang trasuvannya vykonannya, dengan kemungkinan mengagumi perubahan makna perubahan, Anda tidak bisa keluar dari jalan Anda. Jelas bahwa pidhid seperti itu tidak sesuai dengan peningkatan privasi prosedur yang disimpan di mata pengecer.
Prote, krim pendekatan minimalis standar untuk pengembangan HP<_\ществ\ют также инструменты сторонних разработчиков, которые делают работу с хранимыми процедурами весьма удобной Большинство универсальных продуктов для работы с InterBase, перечисленных в приложении "Инструменты администратора и разработчика InterBase", предоставляют удобный инструментарий для работы с ХП. Мы рекомендуем обязательно воспользоваться одним из этих инструментов для работы с хранимыми процедурами и изложение материала будем вести в предположении, что у вас имеется удобный GUI-инструмент, избавляющий от написания традиционных SQL-скриптов
Sintaks prosedur yang disimpan dijelaskan oleh langkah berikutnya:

BUAT nama PROSEDUR
[(tipe data param [, tipe data param...])]
)]
SEBAGAI
;
< procedure_body> = []
< block>
< vanable_declaration_list> =
MENYATAKAN VARIABEL var tipe data;

=
MULAI
< compound_statement>
[< compound_statement> ...]
AKHIR
< compound_statement> = (penyataan;)

Tampaknya dosit besar dan dapat menjadi rumit, tetapi sebenarnya semuanya bahkan lebih sederhana.
Sekali lagi, sumbu pantat adalah prosedur sederhana yang diambil, karena membutuhkan dua angka sebagai input, menjumlahkannya dan mengubah hasilnya:

BUAT PROSEDUR SP_Add(first_arg PRESISI GANDA,
second_arg PRESISI GANDA)
PENGEMBALIAN (Hasil PRESISI GANDA)
SEBAGAI
MULAI
Hasil=pertama_arg+kedua_arg;
MENSKORS;
AKHIR

Yah, semuanya sederhana: setelah perintah CREATE PROCEDURE, nama prosedur yang baru dibuat (yang mungkin unik pada batas basis data) ditentukan - untuk drop SP_Add ini, kemudian untuk lengan, di mana parameter input dari Jenis HP direset - first_arg dan second_arg - dari nilai yang ditetapkan.
Daftar parameter input di bagian non-bahasa dari pernyataan CREATE PROCEDURE - lompatan dilintasi, jika semua data untuk prosedur kerjanya diambil untuk input tambahan ke tabel di tengah badan prosedur.

Dalam prosedur yang disimpan, ada tipe data skalar InteiBase

Berikan kata kunci RETURNS, setelah itu parameter diatur ulang di lengan, yang diputar sesuai dengan jenis yang ditetapkan - dalam kategori ini hanya satu - Hasil.
Bagaimana prosedur tidak bersalah memutar parameter, kata RETURNS dan daftar parameter yang akan diputar, setiap hari.
Setelah kata kunci RETURNSQ AS ditentukan. Sebelum kata kunci AS judul, dan setelah yang baru - teknologi Prosedur.
Tubuh prosedur, yang diambil, adalah salinan deskripsi perubahan internal (lokal) (seperti bau, kita akan melihatnya di bawah), yang dibagi dengan titik setelah koma (;), dan blok operator, tempat di busur operator BEGIN END. Dalam hal ini, tubuh HP bahkan lebih sederhana - kami meminta Anda untuk menambahkan dua argumen input dan melampirkan hasilnya ke output satu, dan kemudian memanggil perintah SUSPEND. Trohi pіznіshe roz' jelas esensi dari perintah di tsієї, tetapi untuk saat ini penting bahwa perlu untuk transmisi parameter yang berbelok ke sana, bintang-bintang bula viklikan menyimpan prosedur.

Variasi dalam prosedur yang disimpan

Hormati bahwa operator di tengah prosedur akan berakhir dengan titik koma (;). Rupanya, poin yang dikeluarkan oleh distributor perintah SQL standar adalah sinyal kepada juru bahasa SQL bahwa teks dari perintah pengantar sudah benar dan perlu diproses. Chi tidak melihat begitu, scho, menunjukkan setitik dengan koma di tengah HP, juru SQL mengakui bahwa perintah itu dimasukkan dengan tepat dan mencoba untuk vikonat bagian dari prosedur, apa yang diambil? Tse pripuschennya tidak maє sensu. Misalnya, jika Anda membuat file, dalam hal ini Anda dapat menulis panduan, menambahkan perintah untuk memulai dari basis data dan mencoba skrip SQL untuk bantuan juru bahasa isql, maka pengampunan akan berubah, itu akan berubah menjadi tidak cocok, pada pemikiran juru bahasa, akhir perintah penciptaan prosedur yang diambil. Untuk menyimpan prosedur untuk file skrip SQL tambahan, tanpa menggunakan alat khusus penjelajah InterBase, perlu sebelum perintah skin untuk membuat HP (hal yang sama berlaku untuk pemicu) menginspirasi yoga. Perintah isql, yang mengubah pemisah proposisi SQL, terlihat seperti ini:

SET JANGKA WAKTU

Untuk cara khas membuat prosedur, apa yang diurus, terlihat seperti ini:

SET JANGKA WAKTU ^;
BUAT PROSEDUR beberapa_prosedur
... . .
AKHIR
^
SET JANGKA ;^

Prosedur tabungan mingguan

Mari kita beralih ke prosedur kita, apa yang harus diperhatikan. Nah, jika sudah dibuat maka diharuskan untuk memanggil, melewati parameter dan mengambil hasil yang dirotasi. Bahkan lebih mudah untuk melakukan ini - cukup menulis kueri SQL untuk tampilan yang menyinggung:

PILIH *
DARI Sp_add (181,35, 23.09)

Tsei meminta kami untuk menyerahkan satu baris kepada kami, yang akan mengambil hanya satu bidang Hasil, di mana jumlah angka 181,35 dan 23,09, maka 204,44 akan diubah.
Dengan cara ini, prosedur kami dapat diretas dalam kueri SQL khusus, yang diretas seperti di program klien, serta di HP atau pemicu lainnya. Variasi prosedur kami ini dimungkinkan dengan menambahkan perintah SUSPEND ke akhir prosedur yang akan diambil.
Di sebelah kanan, di InterBase (dan di semua klonnya) ada dua jenis prosedur yang disimpan: prosedur yang dapat dipilih dan prosedur yang dapat dieksekusi. Fakta bahwa robot memiliki dua jenis HP terkait dengan fakta bahwa prosedur pemilihan terdengar untuk memutar serangkaian parameter input impersonal yang dikelompokkan dalam satu baris, seolah-olah mereka dapat melihat satu set data, dan prosedur viconation tidak dapat memutar parameter, atau mereka dapat memutarnya sendiri di Returns, de satu baris parameter. Prosedur yang dipilih dipanggil di sebelah kueri SELECT, dan prosedur yang dipanggil mengikuti bantuan perintah EXECUTE PROCEDURE.
Setelah tersinggung melihat prosedur yang disimpan, sintaks pembuatan yang sama dan secara formal tidak menantang apa pun, lalu apakah prosedur tersebut dapat digunakan dalam kueri SELECT dan apakah pemilihan prosedur tersebut untuk bantuan EXECUTE PROCEDURE. Nutrisinya adalah bagaimana CP berperilaku dengan berbagai jenis kejahatan. Dengan kata lain, perbedaannya berbeda dalam desain prosedur untuk jenis nyanyian mingguan. Jadi prosedur pemilihan dibuat khusus untuk kueri kueri SELECT, dan prosedur yang dipilih dibuat khusus untuk kueri EXECUTE PROCEDURE. Mari kita lihat kekuatan apa saja yang dipertimbangkan saat mendesain kedua tipe HP ini.
Untuk memahami, bagaimana mempraktekkan prosedur-getaran, untuk mendapatkan sedikit teori. Mari dapatkan kueri SQL sederhana seperti SELECT ID, NAME FROM Table_example. Sebagai hasilnya, kami memperhitungkan tabel keluaran, yang terdiri dari dua kolom (ID dan NAMA) dan jumlah baris yang sama (jumlah baris yang sama dalam tabel Table_example). Berubah menjadi hasil kueri ini, tabel ini juga disebut kumpulan data SQL. . Kemudian server membaca catatan kulit, yang mengirimkan hasil permintaan, memilih bidang yang diperlukan darinya (dalam hal ID dan NAMA) dan mengirim pesan ke klien. Mari kita ulangi prosesnya lagi - dan untuk rekaman kulit yang bergetar.
Semua langkah diperlukan untuk pembaca yang cerdas untuk memahami bahwa semua kumpulan data SQL dibentuk dalam satu baris, termasuk dalam prosedur yang disimpan! vіdminnіst utama prosedur-pemilihan prosedur, yang didasarkan pada fakta bahwa yang pertama dirancang untuk memutar baris tanpa wajah, dan lainnya - hanya untuk satu. Itu sebabnya zastosovyatsya bau dengan cara yang berbeda: prosedur-seleksi panggilan bantuan dari perintah SELECT, seperti "wimage" dalam prosedur untuk memeriksa semua catatan, sehingga Anda dapat mengubahnya. Prosedur, yang disebut, dipanggil untuk bantuan EXECUTE PROCEDURE, seperti "wiymaє" dari HP hanya satu baris, dan reshta (navit yakshcho stink!) Abaikan.
Mari kita lihat contoh prosedur pemilihannya, agar lebih jelas. For > Maaf, mari simpan prosedurnya, yak pratsyuє jadi sama, yak zap SELECT ID, NAME FROM Table_Example, jadi Anda tidak akan bisa memilih field ID NAME z usієї tabel. Pantat sumbu tsey:

BUAT PROSEDUR Simple_Select_SP
PENGEMBALIAN (
PROCID INTEGER,
procNAME VARCHAR(80))
SEBAGAI
MULAI
UNTUK
PILIH ID, NAMA DARI table_example
INTO:procID, :procNAME
MELAKUKAN
MULAI
MENSKORS;
AKHIR
AKHIR

Mari kita lihat prosedur yang disebut Simple_Select_SP. Faktanya, tidak ada parameter input dan dua parameter output – ID dan NAMA. Naytskavіshe, zvichayno, polagaє dalam prosedur tіlі. Berikut adalah konstruksi FOR SELECT:

UNTUK
PILIH ID, NAMA DARI table_example
INTO:procID, :procNAME
MELAKUKAN
MULAI

/* kita perlu mengubah procID dan procName */

AKHIR

Kode shmachok ini berarti ofensif: untuk baris skin, dipilih dari tabel Table_example, pilih nilai perubahan procID dan procName, lalu tambahkan nilai perubahannya.
Anda dapat mengerjakan penampilan dan permintaan: "Ubah? Bagaimana lagi mengubah 9" Jika itu mirip dengan kejutan perbedaan - mereka yang berada dalam prosedur yang disimpan, kami dapat memenangkan perubahan. Dalam bahasa HP, Anda dapat menyuarakan perubahan lokal di tengah prosedur, dan mengalahkan parameter input dan output saat diubah.
Untuk mendeklarasikan perubahan lokal dalam prosedur yang sedang disimpan, perlu menyertakan deskripsi setelah kata kunci AS dan sebelum kata pertama BEGIN. Deskripsi perubahan lokal terlihat seperti ini:

MENYATAKAN VARIABEL ;

Misalnya, untuk mengumumkan panjang Mylnt perubahan lokal, perlu untuk menyisipkan antara deskripsi ofensif AS dan BEGIN

MENYATAKAN VARIABEL MyInt INTEGER;

Perubahan di pantat kami dibuat dari dua potong. Alasannya adalah bahwa perlu untuk mengubahnya di tengah perintah SQL FOR SELECT, untuk memisahkan bidang dalam tabel yang dipilih dalam SELECT, dan untuk mengubahnya, perlu untuk mentransfer sisa ganda. Bahkan jika Anda mengubahnya, Anda dapat memberi nama yang sama, seperti bidang dalam tabel!
Ale dvokrapka di depan nama perubahan diperlukan untuk menang hanya di tengah query SQL. Berpose dengan teks binatang untuk bertarung sampai mati tanpa dvokrapka, misalnya:

procName="Beberapa nama";

Mari kita beralih ke tubuh prosedur kita. Proposisi FOR SELECT memutar data di atas tabel visual - satu set data, dan, satu baris pada satu waktu. Bidang kulit yang diputar dapat ditempatkan di perubahannya sendiri: ID => procID, NAME => procName. Pada bagian DO dan perubahan diminta ke client yang disebut procedure >p>, untuk bantuan perintah SUSPEND
Dengan cara ini, perintah FOR SELECT... DO mengatur loop record yang dipilih di bagian SELECT dari perintah. Pada siklus yang sama, yang merupakan bagian dari DO, transfer rekaman yang dirancang ke klien setelah perintah SUSPEND tambahan dilakukan.
Juga, prosedur pemilihan dikenali untuk rotasi satu atau lebih baris, yang siklusnya diatur di tengah badan HP, yang akan mengembalikan perubahan parameter yang dihasilkan. Misalnya, perintah SUSPEND harus digunakan untuk siklus terakhir dari siklus, seolah-olah mengubah baris data ke klien.

Siklus dan Operator

Perintah krim FOR SELECT... DO, yang mengatur siklus dari catatan pilihan apa pun, jenis siklus lain - WHILE...DO, yang memungkinkan Anda untuk mengatur siklus berdasarkan verifikasi ulang pikiran apa pun. Axis stok HP, siklus scho vikoristovu SAAT. MELAKUKAN. Prosedur ini memutar kuadrat bilangan bulat dari 0 hingga 99:

BUAT PROSEDUR JRE QUAD
PENGEMBALIAN (INTEGER KUADRAT)
SEBAGAI
MENYATAKAN VARIABEL I INTEGER;
MULAI
saya = 1;
Ketika saya<100) DO
MULAI
KUADRAT=I*I;
saya=saya+1;
MENSKORS;
AKHIR
AKHIR

Sebagai hasil dari permintaan SELECT FROM QUAD, kita membutuhkan tabel yang akan menggantikan satu baris QUADRAT, yang akan memiliki kuadrat bilangan bulat dari 1 hingga 99
Untuk menghitung hasil dari getaran SQL dan siklus klasik, dalam prosedur pemindahan yang disimpan, operator IF...THEN..ELSE dipilih, yang memungkinkan Anda untuk mengatur delimitasi dalam fallacy di fallback di masa depan, apakah sintaksnya mirip dengan sebagian besar operator dekompresi dalam pemrograman bergerak tingkat tinggi, pada kuadrat Pascal dan Cі.
Mari kita lihat contoh prosedur yang dapat dilipat, yang disimpan, untuk merampok kaki seseorang.

  1. Hitung harga rata-rata dalam tabel Table_example (div. divisi "Tabel Kunci Utama dan Generator")
  2. Dali untuk catatan kulit di tabel untuk mulai memeriksa ulang, karena harga utama (HARGA) lebih tinggi dari harga rata-rata, kemudian menetapkan harga sama dengan nilai harga rata-rata, ditambah menetapkan penetapan air
  3. Jika harganya lebih rendah atau lebih dari harga rata-rata, maka saya akan menetapkan harga sama dengan harga total, ditambah setengah dari harga eceran di antara harga rata-rata itu.
  4. Putar semua perubahan baris dalam tabel.

Untuk tongkol, nama HP penting, serta parameter input dan output. Semuanya tertulis di header prosedur, yang disimpan

BUAT PROSEDUR MenaikkanHarga(
Percent2Meningkatkan PRESISI GANDA)
RETURNS (ID INTEGER, NAMA VARCHAR(SO), harga_baru GANDA
PRESISI SEPERTI

Prosedur akan disebut KenaikanHarga, ia memiliki satu parameter masukan Peiceni21nciease, yang dapat berupa PRESISI GANDA, dan 3 parameter masukan - ID, NAMA, dan new_pnce. Harap perhatikan bahwa dua parameter pertama mungkin memiliki nama yang sama, seperti bidang dalam tabel Table_example, yang kami pilih untuk diurai. Tse diizinkan oleh aturan prosedur mov, yang disimpan.
Sekarang salah kita untuk menyuarakan perubahan lokal, sehingga Anda akan menang untuk menyimpan nilai rata-rata, suara Anda akan terlihat seperti ini:

MENYATAKAN VARIABEL avg_price PRESISI GANDA;

Sekarang mari kita beralih ke tubuh prosedur, yang diurus Kata kunci MULAI.
Kita perlu menghitung pertama kali untuk algoritma kita - hitung harga rata-rata. Untuk siapa kami mempercepat dengan permintaan semacam ini:

PILIH AVG(harga_l)
DARI Tabel_Contoh
KE:avg_price,-

Ini akan memberi makan fungsi agregat variabel AVG, sehingga memutar nilai rata-rata bidang PRICE_1 dari rata-rata baris yang dipilih - dalam kasus kami, nilai rata-rata PRICE_1 untuk semua tabel Tabel_contoh. Nilai yang diputar oleh permintaan ditempatkan di avg_price change. Untuk mengembalikan rasa hormat, yang diubah avg_pnce di depan double-flap untuk memperbarui penyiraman, yang menang dalam permintaan.
Kekhususan dari permintaan ini adalah mereka yang selalu mengubah satu entri tunggal. Permintaan semacam itu disebut permintaan tunggal dan hanya pilihan seperti itu yang dapat dipilih dalam prosedur yang disimpan. Jika Anda ingin memutar lebih dari satu baris, maka perlu melengkapinya dengan konstruksi FOR SELECT...DO, untuk mengatur siklus untuk memproses baris kulit yang diputar.
Otzhe, kami mendapat nilai rata-rata dari harga. Sekarang perlu melalui semua tabel, untuk membandingkan nilai harga di catatan kulit dengan harga rata-rata dan hidup di
Kami mengatur penyortiran catatan kulit dari tabel Table_example

UNTUK
PILIH ID, NAMA, PRICE_1
DARI Tabel_Contoh
INTO:ID, :NAME, :new_price
MELAKUKAN
MULAI
/*_ini kita buka skin record*/
AKHIR

Saat desain berbeda dengan tabel Table_example, data dan watering values ​​pada skin row akan diberikan ID, NAME dan new_pnce yang diubah. Anda, tentu saja, ingat bahwa data yang dipilih akan diputar sebagai hasilnya, bukan varto: fakta bahwa parameter keluaran ditetapkan tidak berarti bahwa klien menolak nilai qi klien HP! Transfer parameter hanya dimungkinkan ketika perintah SUSPEND dinonaktifkan, dan sebelum itu kami dapat mengubah parameter default sebagai perubahan utama - dalam aplikasi kami, kami juga bekerja dengan parameter new_price.
Juga, di tengah tubuh siklus BEGIN.. END, kita dapat mengubah nilai baris skin. Seperti yang Anda ingat, penting bagi kita untuk mengetahui, sebagai harga dasar, untuk naik dari rata-rata, dan untuk hidup di masa lalu. Prosedur Qiu untuk mencocokkan mi diterapkan untuk bantuan operator IF:

JIKA (harga_baru > avg_price) MAKA /*jadi harga saat ini lebih tinggi untuk harga rata-rata*/
MULAI
/*lalu ​​tetapkan harga baru, sama dengan nilai harga rata-rata, ditambah penetapan ratusan */
harga_baru = (harga_rata-rata + harga_rata-rata*(Persen2Peningkatan/100));
UPDATE Tabel_contoh
TETAPKAN HARGA_1 = :harga_baru
DIMANA ID =: ID;
AKHIR
LAIN
MULAI
/* Jika harga sebenarnya kurang atau lebih dari harga rata-rata, maka kami akan menetapkan harga sama dengan harga total, ditambah setengah dari harga eceran di antara harga rata-rata itu */
new_price = (new_pnce + ((avg_pnce new_price)/2)) ;
UPDATE Tabel_contoh
TETAPKAN HARGA_1 = :harga_baru
DIMANA ID = .ID;
AKHIR

Ibarat seorang bachite, senangnya menyelesaikan konstruksi IF yang hebat, penting untuk mendiskusikannya, jadi jangan berkomentar, suka menulis dengan simbol /**/.
Untuk mengubah harga dengan cara yang sama ke ritel yang dihitung, kami mempercepat operator UPDATE, yang memungkinkan Anda untuk mengubah catatan aktual - satu atau lebih. Untuk menunjukkan dengan jelas di catatan mana Anda perlu mengubah harga, kami akan menang untuk memahami bidang WHERE kunci utama, sama dengan nilai perubahan, di mana nilai ID diambil untuk catatan aliran: ID =: PENGENAL. Tangkap rasa hormat bahwa ID diubah di depan doublet.
Setelah mengubah konstruk IF...THEN...ELSE, ID, NAME dan new_price yang diubah memiliki data, karena merupakan tanggung jawab kami untuk mengubah klien untuk memanggil prosedur. Untuk selanjutnya JIKA perlu memasukkan perintah SUSPEND, agar data terkirim ke sana, bintangnya disebut HP. SELECT...DO tidak mengulangi semua catatan dalam kueri Anda.
Penting untuk menentukan bahwa perintah SUSPEND digunakan, sehingga hanya prosedur yang akan disimpan yang disimpan, perintah EXIT digunakan, sehingga prosedur disimpan setelah transfer baris. Namun, perintah EXIT jarang perlu diselesaikan, chip diperlukan terutama untuk menghentikan siklus pada jangkauan pikiran.
Dalam kasus fallback, jika prosedur dipanggil oleh pernyataan SELECT dan dilengkapi dengan EXIT, baris yang tersisa tidak akan diputar. Tobto, jika Anda perlu menghentikan prosedur dan masih mengambil baris, Anda perlu mempercepat urutannya

MENSKORS;
KELUAR;

Fitur utama EXIT adalah pemilihan kumpulan data tunggal, yang parameternya diputar di pintasan melalui PROSEDUR PELAKSANAAN. Dalam hal ini, nilai parameter eksternal ditetapkan, tetapi pengumpulan data SQL tidak terbentuk, dan prosedur berakhir.
Mari kita tulis kembali teks prosedur kita, sehingga ibu dapat memahami logika ini secara sekilas:

BUAT PROSEDUR MenaikkanHarga(
Percent2Meningkatkan PRESISI GANDA)
PENGEMBALIAN (ID INTEGER, NAMA VARCHAR(80),
new_price PRESISI GANDA) SEBAGAI
MENYATAKAN VARIABEL avg_price PRESISI GANDA;
MULAI
PILIH AVG(harga_l)
DARI Tabel_Contoh
KE:avg_price;
UNTUK
PILIH ID, NAMA, PRICE_1
DARI Tabel_Contoh
INTO:ID, :NAME, :new_price
MELAKUKAN
MULAI
/*disini kami memproses skin record*/
JIKA (new_pnce > avg_price) MAKA /*jadi harga saat ini lebih tinggi untuk harga rata-rata*/
MULAI
/*tetapkan harga baru, sama dengan harga rata-rata, ditambah penetapan ratusan */
harga_baru = (harga_rata-rata + harga_rata-rata*(Persen2Peningkatan/100));
UPDATE Tabel_contoh
TETAPKAN HARGA_1 = :harga_baru
DIMANA ID =: ID;
AKHIR
LAIN
MULAI
/* Jika harga sebenarnya kurang atau lebih dari harga rata-rata, maka saya menetapkan harga sama dengan harga total, ditambah setengah dari harga eceran antara jumlah dan harga rata-rata */
harga_baru = (harga_baru + ((harga_rata-rata - harga_baru)/2));
UPDATE Tabel_contoh
TETAPKAN HARGA_1 = :harga_baru
DIMANA ID =: ID;
AKHIR
MENSKORS;
AKHIR
AKHIR

Contoh Denmark dari prosedur yang disimpan, yang menggambarkan pengembangan konstruksi utama dari prosedur dan pemicu penyimpanan film. Mari kita lihat cara untuk memperbaiki prosedur yang disimpan untuk menyelesaikan beberapa tugas yang sering disalahkan.

Prosedur rekursif yang disimpan

Prosedur InterBase yang disimpan dapat bersifat rekursif. Tse berarti bahwa prosedur yang disimpan, Anda dapat memanggil diri sendiri. Diperbolehkan hingga 1000 prosedur yang sama, yang disimpan, namun, Anda harus ingat bahwa sumber daya yang tersedia di server dapat habis lebih awal, lebih rendah dari investasi HP maksimum yang akan tercapai.
Salah satu prosedur terluas yang disimpan adalah pemrosesan struktur seperti pohon yang disimpan dalam database. Pohon sering digunakan dalam manajemen gudang, gudang, personel, dan penambahan luas lainnya.
Mari kita lihat contoh prosedur yang diambil, bagaimana memilih semua barang dengan jenis yang sama, mulai dari investasi pertama yang sama.
Izinkan saya sampai pada pernyataan tugas: bolehkah saya membawa barang dengan struktur hierarki semacam ini:

Barang
- Teknik Pobutova
- Kulkas
- Tiga kamar
- Dua kamar
- Ruang tunggal
- Mesin pembersih
- Vertikal
- depan
- Klasik
- Vuzki
- Teknologi komputer
....

Struktur Tsya dovіdnika categorіy varіv_v mungkin ibu g_lki raznoї glibini. dan juga membangun dari waktu ke waktu. Misi kami adalah menyediakan pilihan semua elemen akhir hari dari "pelafalan nama umum", mulai dari vuzla apa pun. Misalnya, jika kita memilih "mobil Palny", maka kita perlu mempertimbangkan kategori berikut:

Mesin pengungkit - Vertikal
Mobil frontal - Klasik frontal
Mobil frontal - Mobil frontal yang lebih tinggi

Struktur tabel penting untuk pengumpulan informasi tentang kemajuan barang. Saya telah menyederhanakan skema untuk mengatur pohon dalam satu tabel:

BUAT TABEL GoodsTree
(ID_INTEGER BAIK BUKAN NULL,
ID_PARENT_BAIK INTEGER,
GOOD_NAME VARCHAR(80),
batasan kunci utama pkGooci (ID_GOOD));

Kami membuat satu tabel GoodsTree, di mana hanya ada 3 bidang: ID_GOOD - pengenal kategori yang wajar, ID_PARENT_GOOD - pengenal untuk kategori yang diberikan dan GOOD_NAME - nama kategori. Untuk memastikan integritas data untuk tabel ini, kami meletakkannya di atas meja untuk pertukaran kunci panggilan:

ALTER TABLE GoodsTree
TAMBAHKAN KENDALA FK_goodstree
KUNCI ASING (ID_PARENT_GOOD)
REFERENSI GOODSTPEE (ID_GOOD)

Tabel itu mandiri dan kunci lama yang sama harus diikuti olehnya. schob di meja buv posilan pada ayah yang tidak diketahui, navіt reshkodzhaє mencoba untuk melihat kategori barang, yakі mayut nashchadki.
Mari kita bawa ke tabel data yang akan datang:

ID_BAIK

1
2
3
4
5
6
7
8
9
10
11
12

ID_PARENT_GOOD

0
1
1
2
2
4
4
4
5
5
10
10

NAMA YANG BAGUS

BARANG
Teknik Pobutov
Komputer dan aksesoris
Kulkas
Mesin pembersih
ruang tiga
Dua kamar
ruang tunggal
Vertikal
Frontal
Vuzki
klasik

Sekarang, jika kita memiliki tempat untuk menyimpan data, kita dapat melanjutkan ke pembuatan prosedur penyimpanan, yang akan melihat penghapusan semua kategori barang "sisa" dari yang "terbakar" - misalnya, untuk kategori " Tiga ruang" di luar kategori akan terlihat seperti " Kulkas Pobutov tehnіka Trikamernі".
Prosedur yang menangani struktur seperti pohon telah mengembangkan terminologinya sendiri. Elemen kulit pohon disebut simpul; dan blues antara simpul, yang meringkuk satu lawan satu, disebut sepatu bot orang tua. Vuzli, yang terletak di ujung pohon dan tidak membuat naschadkiv, disebut "daun".
Untuk setiap prosedur yang akan disimpan, parameter input akan menjadi pengidentifikasi kategori, untuk beberapa alasan kami akan mulai menyortir. Prosedur matime disimpan seperti ini:

BUAT PROSEDUR GETFULLNAME (ID_GOOD2SHOW INTEGER)
RETURNS (FULL_GOODS_NAME VARCHAR(1000),
ID_CHILD_BAIK INTEGER)
SEBAGAI
MENYATAKAN VARIABEL CURR_CHILD_NAME VARCHAR(80);
MULAI
/*0rgan_zuєmo zovnіshnіy cycle FOR SELECT untuk label produk bezporednіmi dengan ID_GOOD=ID_GOOD2SHOW */
UNTUK PILIH gtl.id_good, gtl.good_name
DARI GoodsTree gtl
DI MANA gtl.id_parent_good=:ID_good2show
INTO:ID_CHILD_GOOD, :nama_barang_lengkap
MELAKUKAN
MULAI
/"Memeriksa fungsi EXISTS tambahan, jadi putar TRUE, seolah-olah itu akan mengambil satu baris di putaran lengan. Jika simpul yang ditemukan ID_PARENT_GOOD = ID_CHILD_GOOD tidak memiliki jalan pintas, maka itu adalah "daun" dari pohon dan dikonsumsi sebagai hasil */
JIKA (TIDAK ADA(
PILIH * DARI GoodsTree
MANA GoodsTree.id_parent_good=:id_child_good))
KEMUDIAN
MULAI
/* Lewatkan busur pohon ke hasil */
MENSKORS;
AKHIR
LAIN
/* Untuk simpul, seperti membuat tali */
MULAI
//
CURR_CHILD_NAME=nama_barang_lengkap;
/* jalankan prosedur saya secara rekursif */
UNTUK
PILIH ID_CHILD_GOOD,nama_barang_lengkap
DARI GETFULLNAME(:ID_CHILD_GOOD)
INTO:ID_CHILD_GOOD, :nama_barang_lengkap
LAKUKAN MULAI
/*dodaєmo untuk vuzla-ayah ke yang dikenal. */
full_goods_name=CURR_CHILD_NAME| " " | f ull_goods_name,-
MENSKORS; /*menyerahkan barang*/
AKHIR
AKHIR
AKHIR
AKHIR

Jika kita menggunakan prosedur ini dengan parameter input ID_GOOD2SHOW=1, maka kita ambil yang berikut:

Sama seperti bachite, untuk bantuan prosedur rekursif yang disimpan, kami menelusuri seluruh pohon kategori dan mengeluarkan nama-nama kategori-"daun", seolah-olah mereka berada di ujung jarum itu sendiri.

Visnovok

Pada titik ini, kami menyimpulkan tinjauan kemungkinan utama prosedur saya, yang disimpan. Jelas, untuk menguasai perincian prosedur yang disimpan saat membaca satu divisi tidak mungkin, kami telah mencoba mengungkapkan dan menjelaskan konsep utama yang terkait dengan prosedur penyimpanan. Deskripsi desain dan desain HP dapat ditemukan di sebagian besar database
Bagian dari makanan penting, yang terkait dengan biaya prosedur yang dihemat, akan diungkapkan di bagian mendatang - "Memperluas Kemungkinan Menyimpan Prosedur Antar Pangkalan", karena dikaitkan dengan kesalahan umum, vir_shennu situasi pengampunan di prosedur yang disimpan oleh robot.

Di depan siklus ini, dunia melihat bagaimana mungkin untuk menarik data dari tabel, memodifikasi strukturnya, membuat, memodifikasi dan melihat basis data dan objek yang tersembunyi di dalamnya. Pada artikel ini, kita akan berbicara lebih banyak tentang objek yang khas untuk DBMS server: notifikasi, pemicu, dan prosedur yang disimpan.

Dalam artikel pertama dari siklus ini, yang diterbitkan dalam jurnal kami No. 3'2000, kami menunjukkan bahwa sebagian besar DBMS server saat ini mendukung pemberitahuan, pemicu, dan prosedur yang disimpan. Penampilan juga didukung oleh bugatma DBMS, misalnya Access, dBase, Clipper.

Tentukan bahwa pemicu dan prosedur yang disimpan harus ditulis dalam bahasa pemrograman, yang merupakan ekstensi prosedural dari bahasa SQL. Pernyataan yang diperluas memungkinkan Anda untuk mendeskripsikan algoritme, misalnya, do… while, if…then…else, digunakan dalam bahasa SQL itu sendiri . Pada vіdmіnu od MTIE SQL, scho pіdporyadkovuєtsya standar Yogo protsedurnі rozshirennya nіyak tidak standartizovanі, saya rіznі basis data vikoristovuyut rіznі sintaksichnі konstruktsії realіzatsії untuk menenangkan diri algoritmіchnih konstruktsіy, ale, dinegosiasikan vіdmіnnostey di sintaksisі rozshiren SQL database untuk rіznih vihodit luar stattі tsієї.

Untuk mengilustrasikan bagaimana mungkin untuk memutar tampilan, pemicu dan prosedur yang disimpan, kami memilih Microsoft SQL Server 7.0 dan database NorthWind, yang disertakan sebelum set pengiriman DBMS.

Pertama-tama, terapkan, hormati mereka yang menerapkan dan menyimpan pemicu dan prosedur yang menang di DBMS, dapat dianggap menunjuk pada statistik ini. Selain itu, untuk pembuatan objek server, ibu berikut diizinkan, seolah-olah administrator basis data diberikan.

Penting juga bahwa beberapa driver ODBC tidak mendukung siklus prosedur, yang disimpan dari addenda klien, tetapi begitulah cara DBMS sendiri mendukungnya. Prote dengan cara yang sama seperti prosedur yang disimpan, sedini mungkin, dapat dihilangkan dari pemicu.

Mari kita lihat faktanya, lalu bahas prosedur yang disimpan, dan akhiri dengan melihat pemicunya.

Penampilan

Pengajuan - tse tabel virtual, membunyikan jumlah kolom dari salah satu jumlah tabel. Tidak ada data nyata, hanya kueri SQL dari tipe SELECT, yang menunjukkan data yang sama dan dari tabel mana yang perlu diambil saat kembali ke representasi pertama. Z ts point zoru yavlennya - tse ask, scho zberіgaєtsya.

Sebagian besar vipadkiv disajikan dengan kemenangan untuk keamanan data. Misalnya, diakon dari kategori coristuvachiv dapat diakses sebelum mereka muncul, tetapi tidak dalam tabel, mereka dapat membentuk data; Selain itu, permintaan SQL dapat mengatur parameter USER (nama, di mana koristuvach terdaftar), dan dalam hal ini data yang tersedia saat Anda kembali ke tanggal akan jatuh di bawah nama koristuvach.

Di bawah ini adalah karakteristik utama dari manifestasi:

  • yavlennya berperilaku seperti meja;
  • dimanifestasikan untuk tidak membalas data;
  • Kiriman dapat memenangkan lebih banyak data dari tabel yang sama.

Untuk membuat tampilan, kita dapat men-tweak proposisi SQL CREATE VIEW, memodifikasinya dengan proposisi ALTER VIEW, dan menghapusnya dengan proposisi DROP VIEW.

Mari kita lihat pernyataan CREATE VIEW, yang memungkinkan Anda membuat tampilan untuk database streaming.

BUAT TAMPILAN proposisi

Sintaks proposisi untuk pembuatan pernyataan menebak proposisi SQL SELECT dengan sejumlah kata kunci tambahan. Di bawah ini adalah sintaks sederhana:

BUAT VIEW view_name SEBAGAI pernyataan_pilihan

Argumen view_name menentukan nama tampilan. Kata kunci, yang cocok di Microsoft SQL Server, memungkinkan Anda untuk melampirkan teks asli dari proposisi CREATE VIEW ke tabel syscomments.

Kata kunci AS menunjukkan kueri SELECT mana yang benar-benar berlaku saat kembali sebelum mengajukan. Perhatian bahwa permintaan tidak dapat mengganti kata kunci ORDER BY, COMPUTE atau COMPUTE BY, INTO dan tidak dapat merujuk ke tabel waktu.

Untuk mengubah pernyataan yang dibuat sebelumnya, ikuti proposisi ALTER VIEW, seperti yang dijelaskan di bagian ofensif.

DROP VIEW proposisi

Tsya proposisi vikoristovuєtsya untuk vydalannya vyavlennya z da nih. Saat Anda melihat tabel dari database, Anda bisa melihat semua pernyataan yang merujuk padanya. Proposisi Vikoristovuyuchi tsyu, kami bersalah karena mengatakan im'ya vyavlennya, scho terlihat. Setelah dilihat, semua informasi tentang yang baru dilihat dari tabel sistem.

Satu hal lagi, jika Anda perlu melihatnya, Anda dapat menyalahkan pikiran Anda bahwa struktur tabel, yang menjadi dasarnya, berubah setelah penciptaan fenomena tersebut. Anda dapat melihat vistava dalam tampilan ini, lalu membuatnya lagi untuk proposisi CREATE VIEW tambahan.

Penciptaan dan manifestasi vikoristannya

Proposisi CREATE VIEW digunakan untuk membuat pernyataan yang memungkinkan Anda mengubah data, seolah-olah akan diberikan kepada penyanyi. Kiriman dibuat di basis data saat ini dan dikumpulkan sebagai objek.

Cara terbaik untuk membuat tampilan adalah dengan membuat kueri SELECT dan, setelah salah mengartikannya, tambahkan bagian yang hilang dari proposisi CREATE VIEW. Mari kita lihat teks keluaran dari deklarasi Products by Category di database NorthWind (Listing 1).

Baris pertama, dalam huruf tebal, adalah tempat proposisi SQL digunakan untuk membuat pernyataan SELECT, yang memenangkan robot atas pilihan data. Klausa SELECT untuk diterapkan ke data ini memilih bidang dari dua tabel - bidang CategoryName dari tabel CATEGORIES dan bidang ProductName, QuantityPerUnit, UnitsInStock, Dihentikan dari tabel PRODUCTS. Jika data ini diberikan, kedua tabel ditautkan oleh bidang CategoryID, dan hanya produk yang tersedia (kriteria div. setelah kata kunci WHERE) yang disertakan dalam kumpulan data yang dihasilkan. Hasil pengembalian ke pengajuan pertama ditunjukkan pada gambar. satu .

Sekarang mari kita membuat pernyataan, seolah-olah menunjukkan semua wilayah dari wilayah yang sama. Tujuan presentasi adalah untuk keluar dari serangan (Daftar 2).

Setelah mengacaukan fakta bahwa proposisi SELECT memutar hasil sesuai kebutuhan, kami menambahkan pernyataan CREATE VIEW dan menambahkan nama EASTTERR yang dibuat (Listing 3).

Alih-alih membuat teks yang dikirimkan secara manual, Anda dapat menggunakan alat visual untuk memasuki gudang DBMS. pada gambar. Gambar 2 menunjukkan bagaimana aplikasi yang sama dapat dibuat di belakang alat View Designer tambahan, yang merupakan bagian gudang dari Enterprise Manager, yang ada sebelum Microsoft SQL Server.

Bagian atas View Designer memungkinkan Anda untuk menentukan bagaimana tabel terikat dan bidang mana yang ditampilkan dalam data. Di bawah ini Anda dapat memasukkan tabel dan bidang pseudonim, substitusi nilainya, metode tampilan. Dalі meletakkan teks terakhir dari notifikasi dan hasil yogo vikonannya.

Pertama, izinkan saya menyelesaikan tinjauan singkat, kita akan berbicara sedikit tentang itu, bagaimana mengambil informasi tambahan tentang mereka. Di Microsoft SQL Server 7.0, kita dapat mengubah prosedur sistem berikut yang disimpan:

  • Untuk mengambil informasi tentang pengajuan, Anda dapat menggunakan prosedur sistem sp_help. Misalnya, sp_help EastTerr untuk membalikkan keadaan tentang kejadian tersebut;
  • untuk mengedit teks input, Anda dapat mengubah prosedur sp_helptext, yang disimpan;
  • untuk mengetahui daftar tabel untuk menyimpan representasi, Anda dapat menggunakan prosedur sistem sp_depends;
  • untuk mengganti nama pernyataan, Anda dapat mengubah prosedur sistem sp_rename, yang disimpan.

Kami telah melihat siapa yang kami bagi, bagaimana memenangkan bukti untuk penghapusan data, bagaimana memenuhi ini dan kriteria lainnya. Mari kita beralih ke sisa pantat. Di basis data NorthWind ada beberapa wilayah, dan untuk pemilihan daftar wilayah dari wilayah yang dipilih, kami memerlukan beberapa deklarasi yang berbeda. Tugas dapat dimaafkan, yakbee bisa saja melewati nilai RegionID sebagai parameter. Dimungkinkan untuk bekerja untuk prosedur tambahan, apa yang harus diurus, yang akan kita bicarakan di divisi ofensif.

Menyimpan prosedur

Prosedur yang disimpan adalah kompilasi dari satu set proposisi SQL, tabungan dalam database sebagai penamaan objek dan penggabungan sebagai fragmen kode tunggal. Menyimpan prosedur dapat menerima dan memutar parameter. Jika Anda membuat prosedur yang disimpan, server mengkompilasinya dan menempatkannya di cache, yang didistribusikan, setelah itu kode kompilasi dapat diblokir oleh decals. Jika program mengalahkan prosedur yang akan disimpan, ia melewati parameter sesuai kebutuhan, dan server memenangkan prosedur tanpa kompilasi ulang.

Menyimpan prosedur memungkinkan Anda untuk meningkatkan produktivitas program. Pertama-tama, permintaan SQL porіvnjano z yang cukup besar, yang dikuasai oleh program klien, bau busuk membutuhkan waktu kurang dari satu jam untuk mempersiapkan sebelum akhir, bau busuk sudah dikompilasi dan disimpan. Di sisi lain, lebih sedikit lalu lintas juga lebih sedikit dalam waktu, lebih sedikit saat transfer kueri SQL, lebih sedikit jumlah data yang ditransmisikan dalam tautan. Beras. 3 prosedur mingguan ilustratif, yang diambil oleh adendum klien.

Prosedur penyimpanan dikompilasi ulang secara otomatis, seolah-olah dengan benda-benda, menuangkan bau busuk ke dalamnya, zrobleno be-yaki berubah; nakshe kazhuchi, bau zavzhdi sebenarnya. Seperti yang telah disebutkan di atas, prosedur yang disimpan dapat mengambil parameter yang memungkinkan add-on yang berbeda untuk memenangkan prosedur yang sama, zastosovuyuchi set data input yang berbeda.

Prosedur penyimpanan diperlukan untuk mendukung integritas data dan penerapan aturan bisnis. Kadang-kadang, fleksibilitas dodatkova, pecahan tersedia, karena aturan bisnis berubah, Anda dapat mengubah teks prosedur, tanpa mengubah tambahan klien.

Untuk membuat, mengubah dan memodifikasi prosedur, gunakan proposisi SQL khusus - CREATE PROCEDURE, ALTER PROCEDURE dan DROP PROCEDURE. Kami melihat mereka di divisi ofensif.

PROPOSISI BUAT PROSEDUR

Klausa CREATE PROCEDURE dipilih untuk membuat prosedur yang akan disimpan. Mungkin ada sintaks penguraian yang menyinggung:

BUAT PROC proc_name [(@parameter data_type) [= default] ] [...] SEBAGAI sql_statements

Argumen proc_name menetapkan nama prosedur, yang dapat disimpan jika bisa unik di dalam database utas. Argumen @parameter menentukan parameter prosedur. Klausa CREATE PROCEDURE dapat memiliki satu atau lebih parameter. Meskipun parameter tidak memiliki nilai untuk promosi, mungkin ada transfer oleh koresponden (atau adendum klien) di bawah jam prosedur mingguan. Di Microsoft SQL Server 7.0, jumlah parameter prosedur yang diambil tidak bertanggung jawab untuk menimpa 1024; untuk umovchannyam bau mozhut ibu znachennya NULL.

Secara signifikan, keberadaan mekanisme universal untuk mengakses data dapat memberlakukan pembatasan tambahan pada jumlah parameter prosedur yang disimpan. Misalnya, driver BDE untuk Oracle 8 dibangun untuk bekerja hanya dengan prosedur, yang jumlah parameternya tidak berubah 10.

Argumen data_type menentukan tipe data untuk parameter. Kata kunci default dapat digunakan untuk menetapkan nilai di balik promosi - bisa berupa konstanta atau NULL. Ketika nilai ditentukan untuk kunci, prosedur dapat ditinggalkan tanpa nilai untuk parameter. Demikian juga prosedur menggunakan parameter dengan kata kunci LIKE, nilai promosi dapat diganti dengan karakter grup (%, _, dan [^]).

Kata kunci OUTPUT menunjukkan parameter mana yang harus diubah.

Kata kunci AS menunjukkan bahwa prosedur yang harus disalahkan untuk viconating antara melihat berapa banyak proposisi SQL dan proposisi pada ekstensi prosedural SQL khusus untuk server ini.

Prosedur, yang dibuat untuk klausa CREATE PROCEDURE tambahan, akan disimpan dari database streaming. Di Microsoft SQL Server, nama prosedur ditempatkan di tabel sistem sysobjects, dan teks keluaran ditempatkan di tabel syscomments.

Untuk mengubah apa yang telah dilakukan sebelumnya, prosedur berikut dipilih untuk memenangkan proposisi ALTER PROCEDURE, dijelaskan secara singkat di bagian berikutnya.

PROSEDUR DROP Proposisi

Tsya proposisi vikoristovuetsya untuk prosedur jarak jauh yang diambil dari basis data. Proposisi DROP PROCEDURE mengambil satu argumen, nama prosedur yang akan dilihat.

Saat menghapus prosedur yang disimpan, informasi tentangnya dihapus dari tabel sistem sysobjects dan syscomments.

Pembuatan prosedur yang dipilih yang disimpan

Di cabang yang ditugaskan untuk acara, kami menghormati mereka yang akan berguna, sehingga kami dapat meneruskan parameter ke presentasi untuk menggantikan nilai RegionID untuk memilih salah satu dari empat wilayah di basis data NorthWind. Mari kita lihat lagi, yang mengubah daftar wilayah menjadi wilayah:

SELECT Territories.TerritoryDescription, Region.RegionDescription FROM Territories INNER JOIN Region ON Territories.RegionID = Region.RegionID WHERE Territories.RegionID = 1

Untuk memilih wilayah lain, kita perlu mengubah pikiran dalam klausa WHERE di sisa baris. Juga, karena kami telah mengubah (disebut RegID), kami dapat memilih salah satu dari empat wilayah tanpa mengubah bagian lain dari pendaftaran.

Database NorthWind memiliki beberapa region dengan angka 1 sampai 4. Artinya RegID dapat diubah secara keseluruhan tipe. Kode prosedur yang akan diambil ditunjukkan di bawah ini:

BUAT PROSEDUR ShowRegion @RegID int AS SELECT Territories.TerritoryDescription, Region.RegionDescription FROM Territories INNER JOIN Region ON Territories.RegionID = Region.RegionID WHERE Territories.RegionID = @RegID

Berikan kredit kepada mereka yang mungkin telah menghilangkan seluruh teks permintaan SELECT tidak ditempati (dalam visi dalam huruf miring) dan hanya menambahkan proposisi CREATE PROCEDURE ke nama prosedur tersimpan yang baru dibuat (di baris pertama), penghentian parameter (di baris lain) dan kata kunci AS, proposisi tongkol scho vkazuє, benar-benar vykonuyut diї.

Hasil dari prosedur SQL Server Query Analyzer yang dibuat untuk RegID = 2 pembacaan pada gambar. 3 .

Jelas, kita dapat menyimpan prosedur yang sedang disimpan, tidak hanya untuk implementasi versi manifestasi yang diperluas, tetapi juga untuk permintaan SELECT "intelektual". Menyimpan prosedur menyediakan mekanisme yang memungkinkan Anda untuk mengotomatisasi banyak tugas rutin.

Dengan Microsoft SQL Server 7.0, kami juga dapat mengubah prosedur penyimpanan sistem untuk bekerja dengan prosedur terpenting yang disimpan:

  • sp_stored_procedures - menampilkan daftar prosedur untuk disimpan;
  • sp_helptext - menampilkan teks prosedur yang akan disimpan;
  • sp_depends - menampilkan informasi tentang kedaluwarsa prosedur penyimpanan;
  • sp_procoption - mengatur opsi untuk prosedur yang disimpan atau disetel;
  • sp_recompile - mengkompilasi ulang prosedur pada waktu minggu depan;
  • sp_rename – mengubah nama prosedur.

Prosedur sistem yang disimpan

Kita berbicara tentang Microsoft SQL Server, tetapi yang kami maksud adalah banyaknya prosedur sistem yang disimpan dan diimplementasikan olehnya. Nama prosedur sistem yang disimpan dimulai dari SP_ atau XP_ dan disimpan dalam database master. Lebih sering, kami telah menggambarkan perbuatan prosedur sistemik yang sering menang yang diselamatkan.

Mengungkapkan rasa hormat, bahwa pemicu tidak bersalah mengubah data coristuvachev.

Proposisi CREATE TRIGGER dapat memiliki dua tabel khusus. Misalnya, tabel yang dihapus dan disisipkan dapat memiliki struktur yang sama dengan tabel, pemicu ditetapkan, dan menghapus nilai rekaman lama dan baru yang telah diubah. Misalnya, kita dapat memutar proposisi SQL berikut untuk mencari catatan jarak jauh:

PILIH * DARI dihapus

Di meja Gambar 3 menunjukkan tabel yang dihapus dan dimasukkan untuk semua kemungkinan perubahan data.

Untuk mengubah pemicu terbuka, ikuti proposisi ALTER TRIGGER. Mari kita bicara tentang sesuatu yang baru di divisi ofensif.

Untuk tongkolnya, kita perlu menambahkan dua bidang baru ke tabel, di mana jumlahnya akan dikurangi. Yaitu UpdatedBy (nama pengelola yang menghentikan record) dan UpdatedWhen (jam saat record diubah). Mari kita buat pemicu yang disebut KeepTrack. kode sumbu yoga:

CREATE TRIGGER KeepTrack ON Customers INSERT, UPDATE AS UPDATE Customer SET Customers.UpdatedBy = USER_NAME(), Customers.UpdatedWhen = GETDATE() DARI dimasukkan, Pelanggan DI MANA dimasukkan.CustomerID = Customers.CustomerID

Seperti yang Anda lihat dari teks keluaran pemicu, vin diperiksa setelah operasi kulit INSERT dan UPDATE pada tabel Pelanggan. Pemicu ini akan menyimpan nama pengelola (basis data) dari bidang Pelanggan.UpdatedBy, dan mengubah tanggal dan jam dari bidang Pelanggan.UpdatedWhen. Jumlah data dikeluarkan dari tabel waktu, diperkenalkan.

Seperti Bachimo, pemicu ini memungkinkan Anda untuk mengikuti perubahan dan memasukkan catatan baru ke dalam tabel.

Sebelum itu, bagaimana menyelesaikan sekilas tentang pemicu, kami bersalah membantu, sehingga Anda dapat mengetahui informasi tentang pemicu. Tabel sysobjects menyimpan informasi tentang pemicu dan tipe, dan tabel syscomments menyimpan teks keluarannya.

Visnovok

Di bagian ini, kita melihat beberapa jenis objek database - prosedur, deteksi, dan pemicu yang disimpan. Kami mengakui uang muka:

  • Penampilan - tse tabel virtual, suara dibuat sebagai subset kolom dalam satu nomor tabel. Untuk membuat view, digunakan proposisi CREATE VIEW, untuk memodifikasinya, proposisi ALTER VIEW, dan untuk menghapus, proposisi DROP VIEW.
  • Prosedur yang disimpan adalah kompilasi dari satu set proposisi SQL, tabungan dalam database sebagai penamaan objek dan penggabungan sebagai fragmen kode tunggal. Untuk membuat prosedur yang disimpan, proposisi CREATE PROCEDURE diatur, untuk mengubah - ALTER PROCEDURE, dan untuk menghapus - DROP PROCEDURE.
  • Pemicu adalah jenis prosedur khusus yang disimpan, karena secara otomatis dipanggil, jika data dalam tabel tunggal ditambahkan, terlihat, atau diubah untuk proposisi SQL tambahan INSERT, DELETE, atau UPDATE. Pemicu dibuat untuk bantuan klausa CREATE TRIGGER. Untuk mengubah pemicu, proposisi ALTER TRIGGER dipilih, dan proposisi DROP TRIGGER dihapus.

KomputerTekan 12"2000

Menyimpan prosedur SQL - meretas modul program, yang dapat disimpan dari melihat objek yang berbeda. Dengan kata lain, objek yang memiliki instruksi SQL. Prosedur yang disimpan dapat digunakan di klien aplikasi untuk mencapai produktivitas yang baik. Selain itu, objek seperti itu sering dipanggil dari skenario lain, atau untuk menginspirasi beberapa jenis distribusi lainnya.

Masuk

Penting bagi siapa saja untuk mengetahui bahwa mereka mirip dengan prosedur lain (misalnya, MS SQL). Mungkin kau benar. Mereka mungkin memiliki parameter yang serupa, mereka dapat melihat nilai yang serupa. Di atas itu, bau busuk menempel selama satu jam. Misalnya, bau dikaitkan dengan database DDL dan DML, serta dengan fungsi inti (nama kode - UDF).

Faktanya, prosedur SQL yang ditangani mampu memberikan berbagai keuntungan, karena mereka melihat bagian tengah dari proses tersebut. Bezpeka, variabilitas pemrograman, produktivitas - semuanya menambah inti, yang bekerja dari basis data, lebih banyak data. Puncak popularitas prosedur jatuh pada 2005-2010, jika program tersebut dirilis dengan nama "Microsoft" dengan nama SQL Server Management Studio. Dengan bantuan basis data, ini menjadi lebih sederhana, lebih praktis, dan lebih nyaman. Dari rock di dunia seperti mendapatkan popularitas di kalangan programmer. Hari ini, ini adalah program yang benar-benar sehat, seperti untuk koristuvachivs, seperti "menghubungkan" dengan basis data, itu telah menjadi seperti "Exel".

Ketika Anda mengklik prosedur, itu langsung diproses oleh server itu sendiri tanpa zayvih protsessіv yang vtruchannya coristuvacha. Jika demikian, Anda dapat zdiyasnyuvati menjadi seperti jauh, vikonannya, perubahan. Untuk semua itu, Anda memerlukan operator DDL, yang otodidak untuk merampok bagian pemrosesan objek yang paling rumit. Selain itu, tampaknya sangat cepat, dan server sebenarnya bukan navantazhuetsya. Kecepatan dan produktivitas semacam ini memungkinkan Anda untuk dengan mudah mentransfer sejumlah besar informasi dari server ke server.

Untuk implementasi teknologi ini, robot dengan informasi didasarkan pada pemrograman bergerak. Sebelum mereka, Anda dapat melihat, misalnya, PL / SQL seperti Oracle, PSQL dalam sistem InterBase dan Firebird, serta Transact-SQL "Microsoft" klasik. Semua bau dikenali untuk membuat dan menyimpulkan prosedur yang disimpan, yang memungkinkan penguasaan algoritme dalam basis data yang hebat. Penting bagi mereka yang mengelola informasi tersebut untuk dapat melindungi semua objek dari akses tidak sah ke sistem pihak ketiga dan, tentu saja, membuat, mengubah, atau melihat data lain.

Produktifitas

Objek database Qi dapat diprogram dengan jalur yang berbeda. Tse memungkinkan coristuvachas untuk memilih jenis metode vicorous, yang akan menjadi yang paling cocok, yang akan menghemat kekuatan saat itu. Selain itu, prosedur itu sendiri sedang diproses, yang memungkinkan Anda menyembunyikan nilai tukar per jam yang luar biasa antara server dan server. Selain itu, modul dapat diprogram ulang dan diubah kapan saja. Terutama varto singkatan dari kecepatan, yang diperlukan untuk meluncurkan prosedur SQL yang disimpan: proses ini lebih penting untuk orang lain yang serupa dengannya, sehingga dapat dilakukan dengan mudah dan universal.

Bezpeka

Jenis pemrosesan informasi ini digunakan dalam proses serupa, yang menjamin peningkatan keamanan. Tse bezpechuetsya karena fakta bahwa akses orang lain ke prosedur dapat dimatikan lagi. Tse untuk memungkinkan administrator untuk melakukan operasi dengan mereka secara mandiri, tidak takut informasi perehoplennya atau akses tidak sah ke basis data.

transfer data

Sambungan antara prosedur SQL, yang diambil, dan adendum klien didasarkan pada parameter dan nilai yang berbeda, yang diputar. Jangan obov'yazkovo mentransfer data ke prosedur, yang disimpan, informasi diproses (terutama sesuai permintaan) dan diproses untuk SQL. Karena prosedur, yang disimpan, telah menyelesaikan pekerjaannya, ada paket data kembali (ale, saya tahu, untuk bug) ke tambahan, sehingga Anda dapat menggunakan yoga, metode kemenangan, yang bantuannya dapat Anda temukan tahu cara menyimpan prosedur SQL, jadi dan putar, misalnya:

Melewati data untuk parameter tambahan ke tipe Output;

Transfer data untuk bantuan operator;

Kekuatan penghargaan atas bantuan operator untuk pilihan.

Dan sekarang mari kita lihat, seolah-olah melihat seluruh proses di tengah.

1. Membuat Prosedur Tersimpan EXEC di SQL

Anda dapat membuat prosedur di MS SQL (Managment Studio). Setelah prosedur dibuat, maka akan diatur kembali dari basis data pemrograman vuzol, di mana prosedur akan dibuat oleh operator. Untuk prosedur SQL vykonannya, scho zberіgayutsya, vykoristovuyut EXEC-process, kaki m_sti m'ya dari objek itu sendiri.

Saat prosedur digabungkan, nama dideklarasikan terlebih dahulu, setelah itu satu atau lebih parameter yang ditetapkan untuk Anda dipilih. Parameter bisa tidak mengikat. Karena parameter untuk tubuh prosedur akan ditulis, maka perlu untuk melakukan operasi yang diperlukan.

Di sebelah kanan, di mana tubuh dapat diubah secara lokal, roztashovani di nіy, dan ts berubah secara lokal juga sesuai dengan tanggal sebelum prosedur. Dengan kata lain, mereka hanya dapat dilihat di tengah-tengah tubuh prosedur Microsoft SQL Server. Menyimpan prosedur kadang-kadang vvazhayutsya lokal.

Jadi, untuk membuat prosedur, kita memerlukan nama prosedur dan setidaknya satu parameter di badan prosedur. Perhatikan bahwa opsi paling penting untuk waktu seperti itu adalah pembuatan prosedur untuk nama skema di pengklasifikasi.

Tubuh prosedur dapat berupa beberapa jenis contoh, seperti pembuatan tabel, penyisipan satu atau lebih baris baris dalam tabel, jenis dan sifat basis data, dan sebagainya. Badan proteo prosedur berada di antara kemenangan operasi saat ini di operasi baru. Tindakan delimitasi penting telah dibangun di bawah ini:

Tubuh tidak bersalah melakukan prosedur lain yang sedang diselamatkan;

Tubuh dapat membuat pengampunan tentang objek;

Tubuh tidak bersalah menciptakan pemicu sehari-hari.

2. Memasang perubahan di badan prosedur

Anda dapat mengubahnya secara lokal ke tubuh prosedur, dan bau hanya akan berubah di tengah-tengah tubuh prosedur. Praktek yang baik adalah penciptaan prosedur yang diubah pada tongkol tubuh, yang disimpan. Tetapi juga dimungkinkan untuk menginstal perubahan di tempat mana pun di badan objek tertentu.

Dalam beberapa kasus, Anda dapat mengetahui bahwa beberapa perubahan dipasang dalam satu baris, dan kulit parameter perubahan diperkuat air. Juga, harap hormati bahwa Anda dapat mengubah awalan @. Anda dapat menyisipkan perubahan untuk jenis prosedur, di mana pun Anda inginkan. Misalnya, mengubah @NAME1 dapat disuarakan lebih dekat ke akhir prosedur. Untuk memberikan arti dari perubahan tanpa suara, satu set data khusus dikumpulkan. Berdasarkan situasinya, jika lebih dari satu perubahan disuarakan dalam satu baris, dalam situasi seperti itu ada kurang dari satu set data khusus.

Cukup sering, kuis bertanya: "Bagaimana Anda mengenali nilai kecil dalam satu pernyataan dalam judul prosedur?" Sehat. Memberi makan jangkrik, tetapi lebih mudah membuatnya lebih kaya, Anda tidak berpikir begitu. Petunjuk: untuk bantuan pasangan seperti itu, seperti "Pilih Var = nilai". Anda bisa mengalahkan peluang, menyebarkannya dengan koma.

Di pantat paling manipulatif, orang menunjukkan penciptaan prosedur sederhana, apa yang diurus, dan vikonannya . Untuk prosedur ini, Anda dapat mengambil parameter seperti proses, apa yang dipanggil, dan nilainya mendekati yang baru (tetapi jangan mengubahnya). Saat bau busuk keluar, maka di tengah tubuh, proses dimulai. Misalnya, untuk membuat prosedur, bagaimana menerima lokasi wilayah dari pelanggan, apa yang harus dipanggil, dan mengubah data tentang itu, berapa banyak penulis yang dikirim ke lokasi wilayah. Prosedur akan memperhitungkan tabel penulis dari basis data, misalnya, Pub, hingga akhir daftar penulis. Untuk melihat basis data, misalnya, Google menangkap skrip SQL dari sisi SQL2005.

Dalam kasus depan, prosedur mengambil dua parameter, yang akan disebut @State dan @City dalam bahasa Inggris. Jenis data konsisten dengan jenis yang ditetapkan untuk suplemen. Judul prosedur dapat diubah secara internal oleh @TotalAuthors (dari semua penulis), dan akan diubah untuk tujuan menampilkan kuantitasnya. Dalі z'yavlyaєtsya razdіl vyboru zaputu, yakii semua pіdrakhovuє. Nareshti, podrahovane znachennya vіdobrazhaєєtsya vіknі vyvodu atas bantuan operator kepada seorang teman.

Bagaimana cara menyimpan prosedur dengan SQL Viconati

Ada dua cara untuk mengikuti prosedur. Jalur pertama ditampilkan, melewati parameter, karena daftar divisi ditampilkan setelah nama prosedur. Boleh, kita mungkin memiliki dua arti (seperti di pantat depan). Nilai diambil untuk parameter perubahan tambahan dari prosedur @State dan @City. Yang seluruh cara mentransfer parameter dalam urutan penting. Metode ini disebut passing argumen ordinal. Dengan cara lain, parameter dikenali secara tegas, dan dengan cara ini urutannya tidak penting. Cara lain untuk melakukan ini adalah dengan memberikan argumen bernama.

Prosedur dapat diubah sebagai standar. Jadi begitulah, seperti di pantat depan, tetapi hanya di sini parameternya ditampilkan. Jadi parameter @City diambil terlebih dahulu, dan @State diambil dari nilai kunci. Parameter di belakang kunci akan terdengar seperti tidak apa-apa. Prosedur SQL yang disimpan dilewatkan sebagai parameter sederhana. Dalam hal ini, ingatlah, parameter UT mengesampingkan nilai untuk kunci SA. Vicoon lainnya memiliki lebih dari satu nilai argumen untuk parameter @ City, dan parameter @ State mengambil nilai kunci CA. Pembaruan pada program akan senang, sehingga perubahan untuk singkatan akan diperbarui lebih dekat ke akhir daftar parameter. Dengan cara yang berbeda, kita tidak bisa vykonannya, dan bahkan Anda bersalah berlatih dengan transfer argumen penamaan, yang lebih baik dan lebih foldable.

4. Simpan Prosedur SQL Server: Cara Memutar

Ada tiga cara penting untuk mengelola data pada prosedur penyitaan yang disimpan. Bau busuk direhabilitasi di bawah ini:

Memutar nilai prosedur yang diambil;

Kecualikan parameter prosedur yang sedang disimpan;

Pilih salah satu prosedur yang disimpan.

4.1 Mengubah nilai menyimpan prosedur SQL

Dalam metode ini, prosedur memberikan nilai perubahan lokal dan memutarnya. Prosedur dapat dibalik tanpa penundaan. Di pantat penyerang, mereka menciptakan prosedur, seolah-olah membalikkan banyak penulis. Jika Anda membandingkan prosedur ini dengan yang sebelumnya, Anda dapat berpikir bahwa arti untuk yang lain diganti dengan yang kembali.

Sekarang mari kita bertanya-tanya bagaimana mengikuti prosedur dan memasukkan artinya, bagaimana cara berbalik. Prosedur vikonannya vmagaє vstanovlennya zminnoї teman itu, yak dilakukan setelah proses. Perhatikan bahwa Anda dapat mengganti operator Select, misalnya, Select @RetValue, serta OutputValue.

4.2 Hapus parameter prosedur SQL yang disimpan

Arti dari vіdpovіd dapat menjadi vikoristane untuk memutar satu zminnoy, yang kami dan bachiled di pantat depan. Varian dari parameter Output memungkinkan prosedur untuk mengoreksi satu atau yang lain nilai perubahan untuk sisi lain. Parameter output ditunjuk oleh kata kunci yang sama "Output" ketika prosedur dibuat. Jika parameter pekerjaan adalah parameter keluaran, maka objek prosedur bertanggung jawab untuk mengatur nilainya. Menyimpan prosedur SQL, yang dapat digunakan lebih rendah, digunakan dalam kasus yang berbeda dengan informasi sub-bag.

Aplikasi kami akan memiliki dua nama resmi: @TotalAuthors dan @TotalNoContract. Bau busuk ditunjukkan oleh daftar parameter. Qi zminnі memberi arti tengah tubuh prosedur. Jika kita memenangkan parameter, pelanggan dapat memilih nilai yang disisipkan di tengah isi prosedur.

Selain itu, dalam skenario sebelumnya, dua perubahan dibuat untuk meningkatkan nilai, seolah-olah menyimpan prosedur MS SQL Server di parameter keluaran. Kemudian prosedur dipukuli oleh jalur pengaturan nilai normal parameter CA. Parameter berikutnya sama, dan, kemudian, perubahan tanpa suara ditransmisikan secara berurutan. Menangkap rasa hormat bahwa jam berlalunya hari-hari yang berubah adalah kata kunci juga diberikan di sini. Setelah prosedur berhasil, signifikansi, saat mereka meminta bantuan tambahan dari parameter terakhir, ditampilkan untuk rekonsiliasi lebih lanjut.

4.3 Pilih salah satu prosedur SQL untuk disimpan

Teknik ini digunakan untuk memutar himpunan nilai dalam tabel data (RecordSet) ke prosedur lengkap yang diambil. Dalam aplikasi ini, prosedur SQL yang disimpan, dengan parameter @AuthID, memberi makan tabel "Penulis" dengan jalur filter, rekaman diputar setelah parameter @AuthId tambahan. Pernyataan Select mengesampingkan apa yang dapat diputar dan memanggil prosedur untuk dipilih. Ketika prosedur gagal, AuthId dilewatkan kembali. Prosedur seperti itu di sini selalu hanya memutar satu catatan, atau jika tidak, itu perlu. Ale, prosedur yang dilakukan tidak diperbolehkan membalik lebih dari satu catatan setiap hari. Seringkali dimungkinkan untuk menggunakan contoh, untuk beberapa rotasi data dengan parameter yang berbeda, dengan partisipasi perhitungan perubahan, ada cara untuk memberikan sejumlah nilai tas.

Pada akhirnya

Prosedur yang sedang disimpan adalah untuk menyelesaikan dengan modul perangkat lunak yang serius, yang ternyata atau mentransmisikan, dan juga menginstal perubahan yang diperlukan untuk adendum klien. Prosedur Oskіlki, yang disimpan, vikonuєtsya di server itu sendiri, pertukaran data dengan kewajiban besar antara server dan adendum klien (untuk yang dapat dikurangkan) dapat dihapus. Ini memungkinkan Anda untuk menurunkan versi ke server SQL, yang, jelas, jatuh ke tangan penguasa mereka. Salah satu yang dapat diperkirakan adalah prosedur T SQL yang ditangani oleh mereka yang terlibat dalam pembuatan database yang signifikan. Juga, ada sejumlah besar nuansa megah, yang dapat berbeda ketika melakukan prosedur yang disimpan, lebih diperlukan bagi mereka yang berencana untuk terlibat dalam pemrograman, termasuk profesional.