Mengubah Prosedur Tersimpan
Berlaku untuk: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics Analytics
Platform System (PDW)
Artikel ini menjelaskan cara mengubah prosedur tersimpan di SQL Server dengan menggunakan SQL Server Management Studio atau Transact-SQL.
Pembatasan dan batasan
Prosedur tersimpan Transact-SQL tidak dapat dimodifikasi menjadi prosedur tersimpan CLR dan sebaliknya.
Jika definisi prosedur sebelumnya dibuat menggunakan WITH ENCRYPTION atau WITH RECOMPILE, opsi ini diaktifkan hanya jika disertakan dalam pernyataan ALTER PROCEDURE.
Izin
Memerlukan izin ALTER PROCEDURE pada prosedur.
Menggunakan SQL Server Management Studio
Untuk mengubah prosedur di SQL Server Management Studio:
Di Object Explorer, sambungkan ke instans Mesin Database lalu perluas instans tersebut.
Perluas Database, perluas database tempat prosedur berada, lalu perluas Programmability.
Perluas Prosedur Tersimpan, klik kanan prosedur untuk mengubah, lalu pilih Ubah.
Ubah teks prosedur tersimpan.
Untuk menguji sintaks, pada menu Kueri , pilih Uraikan.
Untuk menyimpan modifikasi ke definisi prosedur, pada menu Kueri , pilih Jalankan.
Untuk menyimpan definisi prosedur yang diperbarui sebagai skrip Transact-SQL, pada menu File , pilih Simpan Sebagai. Terima nama file atau ganti dengan nama baru, lalu pilih Simpan.
Penting
Validasi semua input pengguna. Jangan menggabungkan input pengguna sebelum Anda memvalidasinya. Jangan pernah menjalankan perintah yang dibangun dari input pengguna yang tidak valid. Untuk informasi selengkapnya, lihat Injeksi SQL
Menggunakan Transact-SQL
Untuk mengubah prosedur menggunakan perintah T-SQL:
Di Object Explorer, sambungkan ke instans Mesin Database lalu perluas instans tersebut.
Perluas Database, perluas database tempat prosedur berada. Atau, dari bilah alat, pilih database dari daftar database yang tersedia. Untuk contoh ini, pilih
AdventureWorks2022
database.Pada menu File , pilih Kueri Baru.
Salin dan tempel contoh berikut ke editor kueri. Contoh membuat
uspVendorAllInfo
prosedur, yang mengembalikan nama semua vendor dalam database Adventure Works Cycles, produk yang mereka berikan, peringkat kredit mereka, dan ketersediaannya.IF OBJECT_ID ( 'Purchasing.uspVendorAllInfo', 'P' ) IS NOT NULL DROP PROCEDURE Purchasing.uspVendorAllInfo; GO CREATE PROCEDURE Purchasing.uspVendorAllInfo WITH EXECUTE AS CALLER AS SET NOCOUNT ON; SELECT v.Name AS Vendor, p.Name AS 'Product name', v.CreditRating AS 'Rating', v.ActiveFlag AS Availability FROM Purchasing.Vendor v INNER JOIN Purchasing.ProductVendor pv ON v.BusinessEntityID = pv.BusinessEntityID INNER JOIN Production.Product p ON pv.ProductID = p.ProductID ORDER BY v.Name ASC; GO
Penting
Menghilangkan dan membuat ulang prosedur tersimpan yang ada akan menghapus izin yang telah diberikan secara eksplisit ke prosedur tersimpan. Gunakan ALTER sebagai gantinya.
Pada menu File , pilih Kueri Baru.
Salin dan tempel contoh berikut ke editor kueri. Contoh memodifikasi
uspVendorAllInfo
prosedur. KlausaEXECUTE AS CALLER
dihapus dan isi prosedur dimodifikasi untuk mengembalikan hanya vendor yang menyediakan produk yang ditentukan. FungsiLEFT
danCASE
menyesuaikan tampilan kumpulan hasil.ALTER PROCEDURE Purchasing.uspVendorAllInfo @Product varchar(25) AS SET NOCOUNT ON; SELECT LEFT(v.Name, 25) AS Vendor, LEFT(p.Name, 25) AS 'Product name', 'Rating' = CASE v.CreditRating WHEN 1 THEN 'Superior' WHEN 2 THEN 'Excellent' WHEN 3 THEN 'Above average' WHEN 4 THEN 'Average' WHEN 5 THEN 'Below average' ELSE 'No rating' END , Availability = CASE v.ActiveFlag WHEN 1 THEN 'Yes' ELSE 'No' END FROM Purchasing.Vendor AS v INNER JOIN Purchasing.ProductVendor AS pv ON v.BusinessEntityID = pv.BusinessEntityID INNER JOIN Production.Product AS p ON pv.ProductID = p.ProductID WHERE p.Name LIKE @Product ORDER BY v.Name ASC; GO
Untuk menyimpan modifikasi ke definisi prosedur, pada menu Kueri , pilih Jalankan.
Untuk menyimpan definisi prosedur yang diperbarui sebagai skrip Transact-SQL, pada menu File , pilih Simpan Sebagai. Terima nama file atau ganti dengan nama baru, lalu pilih Simpan.
Untuk menjalankan prosedur tersimpan yang dimodifikasi, jalankan contoh berikut.
EXEC Purchasing.uspVendorAllInfo N'LL Crankarm'; GO
Langkah berikutnya
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk