SQL PRINT कथन उपयोगकर्ता द्वारा परिभाषित संदेश प्रदर्शित करने का कार्य करता है। उदाहरण के लिए, आप टी-एसक्यूएल लूप्स के साथ एक स्क्रिप्ट विकसित कर रहे हैं, और आप लूप के प्रत्येक पुनरावृत्ति पर कुछ विशिष्ट संदेश प्रदर्शित करना चाहते हैं। फिर आप प्रिंट स्टेटमेंट का उपयोग कर सकते हैं। या, सशर्त बयानों के साथ एक स्क्रिप्ट विकसित करते समय आप इसका उपयोग कर सकते हैं। उस स्थिति में, आप यह सुनिश्चित करते हैं कि कथन द्वारा मूल्यांकन की गई स्थिति सही कदम उठाती है या सही आउटपुट उत्पन्न करती है। प्रिंट स्टेटमेंट का उपयोग टी-एसक्यूएल क्वेरी या संग्रहीत प्रक्रिया की प्रक्रिया को ट्रैक करने या अनुकूलित संदेश वापस करने के लिए भी किया जा सकता है।
वर्तमान लेख निम्नलिखित उपयोग के मामलों पर केंद्रित है:
- प्रिंट स्टेटमेंट का उपयोग करके एक स्ट्रिंग या इंट वैल्यू प्रिंट करना।
- IF…ELSE कथन में PRINT का उपयोग करना।
- WHILE लूप में PRINT का उपयोग करना।
PRINT स्टेटमेंट का सिंटैक्स निम्नलिखित है:
Print string | @variable | str_expression
- स्ट्रिंग :मान एक वर्ण या यूनिकोड स्ट्रिंग हो सकता है।
- @variable :वर्ण डेटा प्रकार वर्ण या यूनिकोड वर्ण डेटा प्रकार होना चाहिए।
- str_expression :मान एक अभिव्यक्ति हो सकता है जो एक स्ट्रिंग लौटाता है। यह एक शाब्दिक मान, स्ट्रिंग फ़ंक्शन और चर हो सकता है।
जब हम विशिष्ट मान प्रदर्शित करने के लिए PRINT कथन का उपयोग करते हैं, तो आउटपुट SQL सर्वर प्रबंधन स्टूडियो के संदेश फलक में वापस आ जाता है।
नोट: प्रिंट स्टेटमेंट 8000 वर्ण लंबी स्ट्रिंग या 4000 वर्ण लंबी यूनिकोड स्ट्रिंग प्रदर्शित कर सकता है . अगर लंबाई 8000 से अधिक है, तो शेष स्ट्रिंग को छोटा कर दिया जाएगा।
प्रिंट स्टेटमेंट की सीमाएं
- प्रिंट फ़ंक्शन एक वर्ण स्ट्रिंग या यूनिकोड वर्ण स्ट्रिंग देता है। इसलिए, स्ट्रिंग और इंटीजर डेटा प्रकारों को संयोजित करते समय, हमें स्पष्ट रूप से INT मान को char या varchar डेटा प्रकार में बदलना चाहिए।
- SQL सर्वर प्रोफाइलर PRINT स्टेटमेंट को कैप्चर नहीं करता है।
उदाहरण:स्ट्रिंग मान प्रिंट करें
मान लीजिए आप एक स्टेटमेंट लिखना चाहते हैं जो Hello, World . प्रिंट करता है स्क्रीन को। टी-एसक्यूएल इस प्रकार होना चाहिए:
Print 'Hello World'
आउटपुट:
@string . में संग्रहीत मान को प्रिंट करने के लिए चर, हमें निम्नलिखित कोड की आवश्यकता है:
declare @String varchar(30)
set @String='Hello World'
Print @String
आउटपुट:
प्रिंट स्टेटमेंट का उपयोग करके एक पूर्णांक मान प्रिंट करें
निम्नलिखित टी-एसक्यूएल स्क्रिप्ट का प्रयोग करें:
Print 10
आउटपुट:
@intvalue . का मान प्रिंट करने के लिए पैरामीटर, निम्न टी-एसक्यूएल स्क्रिप्ट का उपयोग करें। @intvalue . का डेटा प्रकार एक पूर्णांक है।
declare @IntValue Int
set @IntValue = 10
Print @IntValue
आउटपुट:
आप PRINT स्टेटमेंट का उपयोग करके बुनियादी अंकगणितीय कार्य कर सकते हैं। मान लीजिए कि आप दो मानों का योग करना चाहते हैं। आप दो अंकीय मानों के बीच धन (+) चिह्न जोड़कर ऐसा कर सकते हैं:
Print 10+10
आउटपुट:
प्रिंट स्टेटमेंट का उपयोग करके कस्टम संदेश प्रिंट करें
मान लीजिए आप PRINT स्टेटमेंट का उपयोग करके वर्तमान समय को प्रिंट करना चाहते हैं। ऐसा करने के लिए, हम @inputstring नामक दो SQL PRINT चर घोषित कर रहे हैं और @currentdate . @inputstring . का डेटा प्रकार है वर्चर(50), और @currentdate डेटाटाइम है . क्वेरी निम्नलिखित है:
declare @inputstring varchar(500)
declare @currentdate datetime
set @inputstring ='The time is '
set @currentdate= (select getdate())
Print @inputstring + @currentdate
आउटपुट:
एक त्रुटि होती है। इस त्रुटि को ठीक करने के लिए, हमें @currentdate . में संग्रहीत मान को स्पष्ट रूप से रूपांतरित करना होगा चर। T-SQL स्क्रिप्ट इस प्रकार होनी चाहिए:
declare @inputstring varchar(500)
declare @currentdate datetime
set @inputstring ='The time is '
set @currentdate= (select getdate())
Print @inputstring + convert(varchar,@currentdate,103)
आउटपुट:
IF…ELSE स्टेटमेंट में PRINT स्टेटमेंट का उपयोग करना
अब, हम नमस्ते विश्व को प्रिंट करते हैं IF…ELSE लूप में निर्दिष्ट शर्त के आधार पर। यदि शर्त TRUE का मूल्यांकन करती है, तो Hello World . प्रिंट करें . यदि यह FALSE का मूल्यांकन करता है, तो Hello India print प्रिंट करें ।
if (0=0)
print 'Hello World'
else
Print 'Hello India'
आउटपुट:
इसी तरह, आप आउटपुट की तुलना और प्रिंट करने के लिए टी-एसक्यूएल वेरिएबल में संग्रहीत मानों का उपयोग कर सकते हैं।
मैंने संग्रहित प्रक्रिया बनाई है जो डेटाबेस की स्थिति की जांच करती है। अगर यह ऑनलाइन है, तो यह ऑनलाइन प्रिंट करता है। अन्यथा, यह ERROR प्रिंट करता है। मैं database_id पास कर रहा हूं इनपुट पैरामीटर के रूप में
संग्रहीत कार्यविधि का T-SQL कोड इस प्रकार है:
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
संग्रहीत कार्यविधि निष्पादित करें:
Exec getDBStatus 5
आउटपुट:
अब, आइए ELSE स्थिति का परीक्षण करें। @ . के दूसरे मान का उपयोग करके संग्रहीत कार्यविधि चलाएँ डेटाबेस आईडी पैरामीटर:
use master
go
exec getDBStatus 6
आउटपुट:
WHILE लूप में PRINT स्टेटमेंट का उपयोग करना
मान लीजिए आप हैलो वर्ल्ड को 10 बार प्रिंट करना चाहते हैं। फिर आप WHILE लूप का उपयोग कर सकते हैं। हैलो वर्ल्ड को कई बार प्रिंट करने के लिए टी-एसक्यूएल कोड नीचे दिया गया है:
Declare @i int =0
declare @iterations int =10
While (@i<@iterations)
Begin
Print 'Hello World'
set @[email protected]+1
End
आउटपुट:
अब, हम सभी उपयोगकर्ता डेटाबेस के बैकअप को उत्पन्न करने वाली टी-एसक्यूएल क्वेरी के लिए स्क्रिप्ट विकसित करते हैं। स्क्रिप्ट की प्रगति देखने के लिए, हम PRINT स्टेटमेंट का उपयोग कर रहे हैं।
स्क्रिप्ट में, हम SQL में निम्न var का उपयोग करेंगे:
- @DBcount उपयोगकर्ता डेटाबेस की गिनती रखता है। डेटा प्रकार एक पूर्णांक है।
- @i वृद्धिशील मान रखता है। डेटा प्रकार एक पूर्णांक है।
- @DBName डेटाबेस नाम का मान रखता है। डेटा प्रकार वर्चर (200) है।
- @SQLCommand बैकअप डेटाबेस . रखता है आज्ञा। डेटा प्रकार nvarchar(अधिकतम) है।
- #डेटाबेस एक अस्थायी तालिका है। हम उपयोगकर्ता डेटाबेस का नाम सम्मिलित कर रहे हैं।
सबसे पहले, स्क्रिप्ट #डेटाबेस . नामक एक अस्थायी तालिका बनाती है और इसमें उपयोगकर्ता डेटाबेस नाम सम्मिलित करता है।
create table #Databases (name varchar(200))
insert into #Databases select name from sys.databases where database_id>4
फिर, यह उपयोगकर्ता डेटाबेस की संख्या को पॉप्युलेट करता है और मान को @DBCount में सहेजता है पैरामीटर:
set @DBCount=(select count(1) from #Databases)
इसके बाद, WHILE लूप डेटाबेस के नाम को पॉप्युलेट करता है। WHILE लूप @i . के मानों तक निष्पादित होता है और @DBCount समकक्ष बनें।
WHILE (@DBCount>@i)
WHILE लूप में, हम #Databases से डेटाबेस का नाम प्राप्त करने के लिए TOP क्लॉज का उपयोग करते हैं। तालिका और इसे @DBName . में सहेजें चर।
Begin
set @DBName=(select top 1 name from #Databases)
उसके बाद, एक गतिशील टी-एसक्यूएल कमांड बनाया जाता है। यह @DBName . का मान सेट करता है डायनेमिक SQL में पैरामीटर।
set @SQLCommand = 'Backup database [' [email protected]+'] to disk =''D:\Backup\' + @DBName +'.bak'''
यह सत्यापित करने के लिए कि बैकअप डेटाबेस क्वेरी सही है, हमने PRINT स्टेटमेंट जोड़ा है जो @SQLCommand लौटाता है परिवर्तनीय मान।
Print @SQLCommand
अगला कथन @I . के मान को बढ़ाता है एक करके और @DBName . में संग्रहीत नाम के साथ रिकॉर्ड को हटा देता है चर।
delete from #Databases where [email protected]
set @[email protected] + 1
End
पूरी स्क्रिप्ट निम्नलिखित है:
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
स्क्रिप्ट आउटपुट नीचे है:
हम सभी उपयोगकर्ता डेटाबेस का बैकअप लेने के लिए विशिष्ट स्क्रिप्ट तैयार करने के लिए उपरोक्त स्क्रिप्ट का उपयोग कर सकते हैं।
सारांश
आलेख ने SQL सर्वर पर PRINT कथन के सार और सीमाओं को समझाया और व्यावहारिक उदाहरणों द्वारा इसके उपयोग को स्पष्ट किया।