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

Ikhtisar Pernyataan PRINT di SQL Server

Pernyataan SQL PRINT berfungsi untuk menampilkan pesan yang ditentukan pengguna. Misalnya, Anda sedang mengembangkan skrip dengan T-SQL Loops, dan Anda ingin menampilkan beberapa pesan spesifik pada setiap iterasi dari sebuah loop. Kemudian Anda dapat menggunakan pernyataan PRINT. Atau, Anda dapat menggunakannya saat mengembangkan skrip dengan pernyataan bersyarat. Dalam hal ini, Anda memastikan bahwa kondisi yang dievaluasi oleh pernyataan melakukan langkah yang benar atau menghasilkan keluaran yang benar. Pernyataan PRINT juga dapat digunakan untuk melacak proses kueri T-SQL atau prosedur tersimpan atau untuk mengembalikan pesan yang disesuaikan.

Artikel saat ini berfokus pada kasus penggunaan berikut:

  1. Mencetak nilai string atau int menggunakan Pernyataan PRINT.
  2. Menggunakan PRINT dalam pernyataan IF…ELSE.
  3. Menggunakan PRINT dalam Perulangan WHILE.

Sintaks dari pernyataan PRINT adalah sebagai berikut:

Print string | @variable | str_expression
  • string :Nilai dapat berupa karakter atau string Unicode.
  • @variabel :Tipe data karakter harus berupa karakter atau tipe data karakter Unicode.
  • str_expression :nilai dapat berupa ekspresi mengembalikan string. Itu bisa berupa nilai literal, fungsi string, dan variabel.

Saat kita menggunakan pernyataan PRINT untuk menampilkan nilai tertentu, output akan ditampilkan di panel pesan SQL Server Management studio.

Catatan: Pernyataan PRINT dapat menampilkan string sepanjang 8000 karakter atau string Unicode sepanjang 4000 karakter . Jika panjangnya melebihi 8000, string yang tersisa akan dipotong.

Batasan pernyataan PRINT

  1. Fungsi PRINT mengembalikan string karakter atau string karakter UNICODE. Oleh karena itu, saat menggabungkan tipe data string dan Integer, kita harus secara eksplisit mengonversi nilai INT menjadi tipe data char atau varchar.
  2. Profiler SQL Server tidak menangkap pernyataan PRINT.

Contoh:Cetak nilai String

Misalkan Anda ingin menulis pernyataan yang mencetak Halo, Dunia ke layar. T-SQL harus sebagai berikut:

Print 'Hello World'

Keluaran:

Untuk mencetak nilai yang disimpan di @string variabel, kita membutuhkan kode berikut:

declare @String varchar(30)
set @String='Hello World'
Print @String

Keluaran:

Mencetak nilai Integer menggunakan pernyataan PRINT

Gunakan skrip T-SQL berikut:

Print 10

Keluaran:

Untuk mencetak nilai @intvalue parameter, gunakan skrip T-SQL berikut. Tipe data @intvalue adalah bilangan bulat.

declare @IntValue Int
set @IntValue = 10
Print @IntValue

Keluaran:

Anda dapat melakukan fungsi aritmatika dasar menggunakan pernyataan PRINT. Misalkan Anda ingin melakukan SUM dari dua nilai. Anda dapat melakukannya dengan menambahkan tanda plus (+) di antara dua nilai numerik:

Print 10+10

Keluaran:

Mencetak pesan khusus menggunakan pernyataan PRINT

Misalkan Anda ingin mencetak waktu saat ini menggunakan pernyataan PRINT. Untuk melakukannya, kami mendeklarasikan dua variabel SQL PRINT bernama @inputstring dan @tanggal saat ini . Tipe data @inputstring adalah varchar(50), dan @tanggal saat ini adalah waktu kencan . Pertanyaannya adalah sebagai berikut:

declare @inputstring varchar(500)
declare @currentdate datetime
set @inputstring ='The time is '
set @currentdate= (select getdate())
Print @inputstring + @currentdate

Keluaran:

Terjadi kesalahan. Untuk memperbaiki kesalahan ini, kita harus secara eksplisit mengonversi nilai yang disimpan di @currentdate variabel. Skrip T-SQL harus sebagai berikut:

declare @inputstring varchar(500)
declare @currentdate datetime
set @inputstring ='The time is '
set @currentdate= (select getdate())
Print @inputstring + convert(varchar,@currentdate,103)

Keluaran:

Menggunakan Pernyataan PRINT dalam pernyataan IF…ELSE

Sekarang, mari kita cetak Hello World berdasarkan kondisi yang ditentukan dalam loop IF…ELSE. Jika kondisi bernilai TRUE, maka print Hello World . Jika bernilai FALSE, maka cetak Hello India .

if (0=0)
print 'Hello World'
else 
Print 'Hello India'

Keluaran:

Demikian pula, Anda dapat menggunakan nilai yang disimpan dalam variabel T-SQL untuk membandingkan dan mencetak output.

Saya telah membuat prosedur tersimpan yang memeriksa status database. Jika online, itu mencetak ONLINE. Lain, itu mencetak ERROR. Saya melewati database_id sebagai parameter masukan.

Kode T-SQL dari prosedur tersimpan adalah sebagai berikut:

create procedure getDBStatus
@DatabaseID int 
as
begin
declare @DBStatus varchar(20)
set @DBStatus=(select state_desc from sys.databases where [email protected])
if @DBStatus='ONLINE'
Print ' Database is ONLINE'
else
Print 'Database is in ERROR state.'
End

Jalankan prosedur tersimpan:

Exec getDBStatus 5

Keluaran:

Sekarang, mari kita uji kondisi ELSE. Jalankan prosedur tersimpan menggunakan nilai lain @ databaseID parameter:

use master
go
exec getDBStatus 6

Keluaran:

Menggunakan Pernyataan PRINT dalam loop WHILE

Misalkan Anda ingin mencetak Hello World 10 kali. Kemudian Anda dapat menggunakan loop WHILE. Di bawah ini adalah kode T-SQL untuk mencetak hello world beberapa kali:

Declare @i int =0
declare @iterations int =10
While (@i<@iterations)
Begin
Print 'Hello World'
set @[email protected]+1
End

Keluaran:

Sekarang, mari kita kembangkan skrip untuk kueri T-SQL yang menghasilkan cadangan semua basis data pengguna. Untuk melihat kemajuan skrip, kami menggunakan pernyataan PRINT.

Dalam skrip, kami akan menggunakan var berikut dalam SQL:

  1. @DBcount memegang hitungan database pengguna. Tipe datanya adalah bilangan bulat.
  2. @i memegang nilai-nilai tambahan. Tipe datanya adalah bilangan bulat.
  3. @DBName memegang nilai nama database. Tipe datanya adalah varchar(200).
  4. @SQLCommand menyimpan Database cadangan memerintah. Tipe datanya adalah nvarchar(max).
  5. #Database adalah tabel suhu. Kami memasukkan nama database pengguna.

Pertama, skrip membuat tabel temp bernama #Database dan memasukkan nama database pengguna ke dalamnya.

create table #Databases (name varchar(200))
insert into #Databases select name from sys.databases where database_id>4

Kemudian, ia mengisi jumlah database pengguna dan menyimpan nilainya di @DBCount parameter:

set @DBCount=(select count(1) from #Databases)

Selanjutnya, loop WHILE mengisi nama Database. Loop WHILE dijalankan hingga nilai @i dan @DBCount menjadi setara.

WHILE (@DBCount>@i)

Dalam loop WHILE, kami menggunakan klausa TOP untuk mendapatkan nama Database dari #Databases tabel dan simpan di @DBName variabel.

Begin
set @DBName=(select top 1 name from #Databases)

Setelah itu, perintah T-SQL dinamis dibuat. Ini menetapkan nilai @DBName parameter dalam SQL dinamis.

set @SQLCommand = 'Backup database [' [email protected]+'] to disk =''D:\Backup\' + @DBName +'.bak'''

Untuk memverifikasi bahwa kueri basis data cadangan sudah benar, kami telah menambahkan pernyataan PRINT yang mengembalikan @SQLCommand nilai variabel.

Print @SQLCommand

Pernyataan berikutnya menambah nilai @I satu per satu dan menghapus catatan dengan nama yang disimpan di @DBName variabel.

delete from #Databases where [email protected]
set @[email protected] + 1
End

Script lengkapnya adalah sebagai berikut:

set nocount on
declare @DBCount int
declare @i int =0
declare @DBName varchar(200)
declare @SQLCommand nvarchar(max)
create table #Databases (name varchar(200))
insert into #Databases select name from sys.databases where database_id>4 
set @DBCount=(select count(1) from #Databases)
WHILE (@DBCount>@i)
Begin
set @DBName=(select top 1 name from #Databases)
set @SQLCommand = 'Backup database [' [email protected]+'] to disk =''D:\Backup\' + @DBName +'.bak'''
Print @SQLCommand
delete from #Databases where [email protected]
set @[email protected] + 1
End
drop table #Databases

Output skrip di bawah ini:

Kita dapat menggunakan skrip di atas untuk menyiapkan skrip khusus untuk membuat cadangan semua basis data pengguna.

Ringkasan

Artikel tersebut menjelaskan esensi dan batasan pernyataan PRINT pada SQL Server dan mengilustrasikan penggunaannya dengan contoh praktis.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nonaktifkan Akun SA di SQL Server (Contoh T-SQL)

  2. Setel opsi 9 dalam prosedur tersimpan SQL Server menggunakan WinHttp.WinHttpRequest.5.1 untuk TLS 1.2

  3. Log transaksi untuk database sudah penuh

  4. Unggah file CSV ke server SQL

  5. Cara Membuat Skrip DDL (Buat) dari SQL Server Management Studio (SSMS) - Tutorial SQL Server / TSQL Bagian 17