Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Ubah Fungsi Bernilai Tabel di SQL Server

Anda dapat mengubah fungsi bernilai tabel (TVF) di SQL Server menggunakan ALTER FUNCTION Sintaks T-SQL.

Anda cukup mengikuti ALTER FUNCTION dengan definisi baru. Pada dasarnya ini seperti menggunakan CREATE FUNCTION kecuali Anda mengganti CREATE dengan ALTER .

Contoh

Berikut ini contoh untuk didemonstrasikan:

ALTER FUNCTION dbo.udf_CatsByName_ITVF( @CatName varchar(70) ) MENGEMBALIKAN TABEL DENGAN SCHEMABINDINGASRETURN ( SELECT CatId, CatName, Phone FROM dbo.Cats WHERE CatName =@CatName );GO

Jika fungsi ini belum ada, dan saya membuatnya untuk pertama kalinya, saya akan menggunakan kode berikut:

BUAT FUNGSI dbo.udf_CatsByName_ITVF( @CatName varchar(70) ) MENGEMBALIKAN TABEL DENGAN SCHEMABINDINGASRETURN ( SELECT CatId, CatName, Phone FROM dbo.Cats WHERE CatName =@CatName );GO

Sama persis, kecuali diawali dengan CREATE bukannya ALTER .

Lepaskan dan Buat Ulang

Cara lain untuk melakukannya adalah dengan menghapus fungsi dan membuatnya lagi:

FUNGSI DROP JIKA ADA udf_CatsByName_ITVF;FUNGSI GOCREATE dbo.udf_CatsByName_ITVF( @CatName varchar(70) ) MENGEMBALIKAN TABEL DENGAN SCHEMABINDINGASRETURN ( SELECT CatName_Cats); GO SELECT CatName, Telepon DARI  

Dalam hal ini, saya menggunakan sintaks DIE (Drop If Exists), yang berarti saya tidak akan mendapatkan kesalahan jika objek belum ada sebelum mencoba untuk menjatuhkannya.

TVF Inline vs TVF Multi-Pernyataan

Contoh di halaman ini menggunakan fungsi bernilai tabel sebaris. Konsep yang sama berlaku untuk TVF multi-pernyataan.

Lihat Membuat Fungsi Bernilai Tabel Sebaris dan Membuat Fungsi Bernilai Tabel Multi-Pernyataan untuk contoh yang lebih mendetail dari masing-masing fungsi.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pemicu untuk mencegah Penyisipan untuk data duplikat dari dua kolom

  2. Apa itu 'pengidentifikasi multi-bagian' dan mengapa tidak bisa diikat?

  3. Perbedaan antara #temptable dan ##TempTable?

  4. Apa perbedaan kinerja utama antara tipe data varchar dan nvarchar SQL Server?

  5. Bagaimana saya harus meneruskan nama tabel ke proc yang disimpan?