Chapter 7
SQL Procedure
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
What Is the SQL Procedure? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
What Are PROC SQL Tables? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
What Are Views? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
SQL Procedure Coding Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Threaded Processing Using PROC SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Syntax: SQL Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
PROC SQL Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
ALTER TABLE Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
CONNECT Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
CREATE INDEX Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
CREATE TABLE Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
CREATE VIEW Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
DELETE Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
DESCRIBE Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
DISCONNECT Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
DROP Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
EXECUTE Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
INSERT Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
RESET Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
SELECT Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
UPDATE Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
VALIDATE Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
Examples: SQL Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
Example 1: Creating a Table and Inserting Data into It . . . . . . . . . . . . . . . . . . . . . 269
Example 2: Creating a Table from a Query's Result . . . . . . . . . . . . . . . . . . . . . . . . 271
Example 3: Updating Data in a PROC SQL Table . . . . . . . . . . . . . . . . . . . . . . . . . 273
Example 4: Joining Two Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
Example 5: Combining Two Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Example 6: Reporting from DICTIONARY Tables . . . . . . . . . . . . . . . . . . . . . . . . 281
Example 7: Performing an Outer Join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
Example 8: Creating a View from a Query’s Result . . . . . . . . . . . . . . . . . . . . . . . . 289
Example 9: Joining Three Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
Example 10: Querying an In-Line View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
Example 11: Retrieving Values with the SOUNDS-LIKE Operator . . . . . . . . . . . 298
Example 12: Joining Two Tables and Calculating a New Value . . . . . . . . . . . . . . 301
Example 13: Producing All the Possible Combinations of the
Values in a Column . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
Example 14: Matching Case Rows and Control Rows . . . . . . . . . . . . . . . . . . . . . . 309
Example 15: Counting Missing Values with a SAS Macro . . . . . . . . . . . . . . . . . . 312
215