Di SQL Server, Anda dapat menggunakan Transact-SQL VIEWS
tampilan skema informasi sistem untuk mengembalikan informasi tentang satu atau lebih tampilan dalam database saat ini. Ini mengembalikan satu baris untuk tampilan yang dapat diakses oleh pengguna saat ini di database saat ini.
Untuk menggunakan tampilan ini, tentukan nama lengkap INFORMATION_SCHEMA.VIEWS
.
Contoh 1 – Mengembalikan Informasi tentang Tampilan Tertentu
Berikut adalah contoh pengembalian informasi tentang semua tampilan yang dapat diakses oleh pengguna saat ini di database saat ini.
SELECT TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, CHECK_OPTION, IS_UPDATABLE FROM INFORMATION_SCHEMA.VIEWS;
Hasil:
+-----------------+----------------+--------------+----------------+----------------+ | TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | CHECK_OPTION | IS_UPDATABLE | |-----------------+----------------+--------------+----------------+----------------| | Music | dbo | RockAlbums | NONE | NO | | Music | dbo | JazzAlbums | NONE | NO | | Music | dbo | BluesAlbums | NONE | NO | +-----------------+----------------+--------------+----------------+----------------+
Saya sengaja menghilangkan kolom dalam contoh ini. Saya menghilangkan VIEW_DEFINITION
kolom. Saya meninggalkannya karena mengacaukan output saat menggunakan alat baris perintah saya. Anda dapat melihat contoh yang menyertakan kolom ini di bawah.
Perhatikan bahwa dokumentasi Microsoft memperingatkan bahwa Anda tidak boleh menggunakan INFORMATION_SCHEMA
view untuk menentukan skema suatu objek. Satu-satunya cara yang dapat diandalkan untuk menemukan skema suatu objek adalah dengan menanyakan sys.objects
tampilan katalog.
Contoh 2 – Mengembalikan Informasi tentang Tampilan Tertentu
Berikut ini contoh pengembalian informasi tentang tampilan tertentu.
SELECT TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, CHECK_OPTION, IS_UPDATABLE FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME = 'RockAlbums';
Hasil:
+-----------------+----------------+--------------+----------------+----------------+ | TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | CHECK_OPTION | IS_UPDATABLE | |-----------------+----------------+--------------+----------------+----------------| | Music | dbo | RockAlbums | NONE | NO | +-----------------+----------------+--------------+----------------+----------------+
Ini dia lagi dengan VIEW_DEFINITION
kolom termasuk:
SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME = 'RockAlbums';
Hasil:
+-----------------+----------------+--------------+-------------------+----------------+----------------+ | TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | VIEW_DEFINITION | CHECK_OPTION | IS_UPDATABLE | |-----------------+----------------+--------------+-------------------+----------------+----------------| | Music | dbo | RockAlbums | CREATE VIEW RockAlbums AS SELECT AlbumName, ArtistName FROM Albums INNER JOIN Artists ON Albums.ArtistId = Artists.ArtistId INNER JOIN Genres ON Albums.GenreId = Genres.GenreId WHERE Genres.Genre = 'Rock'; | NONE | NO | +-----------------+----------------+--------------+-------------------+----------------+----------------+
Contoh 3 – Mengembalikan Hanya Definisi Tampilan
Terlepas dari kelemahan definisi tampilan yang mengacaukan tata letak saya, kolom ini dapat berguna jika Anda hanya mencari definisi tampilan:
SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME = 'RockAlbums';
Hasil:
+-------------------+ | VIEW_DEFINITION | |-------------------| | CREATE VIEW RockAlbums AS SELECT AlbumName, ArtistName FROM Albums INNER JOIN Artists ON Albums.ArtistId = Artists.ArtistId INNER JOIN Genres ON Albums.GenreId = Genres.GenreId WHERE Genres.Genre = 'Rock'; | +-------------------+
Contoh 4 – Mengembalikan Definisi Tampilan dari Beberapa Tampilan
VIEW_DEFINITION
kolom bisa sangat berguna jika ingin membuat daftar definisi tampilan untuk beberapa tampilan sekaligus:
SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME = 'RockAlbums';
Hasil:
+-------------------+ | VIEW_DEFINITION | |-------------------| | CREATE VIEW RockAlbums AS SELECT AlbumName, ArtistName FROM Albums INNER JOIN Artists ON Albums.ArtistId = Artists.ArtistId INNER JOIN Genres ON Albums.GenreId = Genres.GenreId WHERE Genres.Genre = 'Rock'; | | CREATE VIEW JazzAlbums AS SELECT AlbumName, ArtistName FROM Albums INNER JOIN Artists ON Albums.ArtistId = Artists.ArtistId INNER JOIN Genres ON Albums.GenreId = Genres.GenreId WHERE Genres.Genre = 'Jazz'; | | CREATE VIEW BluesAlbums AS SELECT AlbumName, ArtistName FROM Albums INNER JOIN Artists ON Albums.ArtistId = Artists.ArtistId INNER JOIN Genres ON Albums.GenreId = Genres.GenreId WHERE Genres.Genre = 'Blues'; | +-------------------+ (3 rows affected)
Contoh 5 – Mengembalikan Definisi Tampilan Besar
VIEW_DEFINITION
kolom memiliki panjang maksimum nvarchar(4000) . Untuk definisi tampilan yang lebih besar dari ini, Anda dapat menggunakan OBJECT_DEFINITION()
fungsi (bersama dengan OBJECT_ID()
function) untuk mengembalikan definisi lengkap.
Nilai kembalian OBJECT_DEFINITION()
fungsinya adalah nvarchar(maks) , sehingga tidak memiliki batasan karakter VIEW_DEFINITION
kolom (seperti yang disebutkan, adalah nvarchar(4000) ).
Contoh:
SELECT OBJECT_DEFINITION(OBJECT_ID(TABLE_NAME)) FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME = 'RockAlbums';
Hasil:
+--------------------+ | (No column name) | |--------------------| | CREATE VIEW RockAlbums AS SELECT AlbumName, ArtistName FROM Albums INNER JOIN Artists ON Albums.ArtistId = Artists.ArtistId INNER JOIN Genres ON Albums.GenreId = Genres.GenreId WHERE Genres.Genre = 'Rock'; | +--------------------+
Jelas, contoh ini tidak menunjukkan manfaat menggunakan OBJECT_DEFINITION()
fungsi, karena definisi tampilan terlalu kecil, tetapi jika Anda memiliki definisi tampilan ekstra besar, semoga contoh ini membantu.