Transact-SQL User’s Guide xix
Adaptive Server Enterprise Version 12
13. Using Batches and Control-of-Flow Language
What Are Batches and Control-of-Flow Language? . . . . . . . . . . . . . . . . . . . . . . . . . 13-1
Rules Associated with Batches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-2
Examples of Using Batches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-3
Batches Submitted As Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-6
Using Control-of-Flow Language. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-7
if...else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-8
case Expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-10
Using case Expression for Alternative Representation . . . . . . . . . . 13-10
case and Division by Zero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-11
case Expression Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-12
case Expression Requires At Least One Non-NULL Result. . . . . . 13-13
case. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-13
case and Value Comparisons. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-15
coalesce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-17
nullif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-18
begin...end . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-19
while and break...continue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-20
declare and Local Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-22
goto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-23
return. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-23
print. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-24
raiserror. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-26
Creating Messages for print and raiserror . . . . . . . . . . . . . . . . . . . . . . . . 13-27
waitfor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-28
Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-29
Slash-Asterisk Style Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-30
Double-Hyphen Style Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-30
Local Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-31
Declaring Local Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-31
Local Variables and select Statements. . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-32
Local Variables and update Statements . . . . . . . . . . . . . . . . . . . . . . . . . . 13-33
Local Variables and Subqueries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-34
Local Variables and while Loops and if…else Blocks . . . . . . . . . . . . . . . 13-34
Variables and Null Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-35
Global Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-36
Transactions and Global Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-37
Checking for Errors with @@error . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-37
Checking IDENTITY Values with @@identity . . . . . . . . . . . . . . . . . 13-37
Checking the Transaction Nesting Level with @@trancount . . . . . 13-37
Checking the Transaction State with @@transtate . . . . . . . . . . . . . . 13-38