Overview
SQL Prompt for Visual Studio Enterprise is an add-in for Visual Studio that extends and enhances the standard IntelliSense-style code completion. SQL Prompt can make your developers twice as fast at working with SQL, and leaves them free to concentrate on how the code actually works.
It helps your team work with each other’s code and write consistent queries.
Using SQL Prompt allows you to improve productivity by stripping away the repetition of coding. As well as making the most common queries, such as SELECTs and INSERTs, quick to write, SQL Prompt completes JOIN conditions for you automatically. You don’t have to remember any column names or aliases.
Pre-requisites
In order to complete this lab you will need the Visual Studio 2017 virtual machine provided by Microsoft. Click the button below to launch the virtual machine on the Microsoft Hands-on-Labs portal.
Alternatively, you can download the virtual machine from here
Important Note: Redgate Data Tools (ReadyRoll Core, SQL Prompt Core, and SQL Search) are available now out of the box with Visual Studio 2017 Enterprise but we missed to include these components in the VM. You will need to install these components before you proceed further with the lab. Please see this page for step-by-step instructions on installing Redgate Data Tools in Visual Studio and ReadyRoll Extension for Team Foundation Server.
Alternatively, you can try this labs on TechNet Virtual Centre where we have the Redgate Data tools and the TFS extension pre-installed in the VM.
Task 1: Writing our first query with SQL Prompt
Let’s connect to a database from the Server Explorer window in Visual Studio* and take a look at some of the highlights
Action | Screenshot |
---|---|
1. Open Server Explorer and Connect to the PartsUnlimited database 2. Right click on the database and select New Query 3. Let’s assume we need to write a stored procedure on the Orders table |
|
Hit the spacebar to invoke SQL Prompt Type ‘SE’ complete to SELECT Type ‘* F’ complete to FROM Select Order from the drop-down |
|
As you can see it also qualifies and uses square brackets where necessary Go – Execute query |
--Code completions for T-SQL Commands
SELECT * FROM dbo.[Order]
Task 2: Create a stored procedure
In addition to this it also works with Keywords, lets create a stored procedure to retrieve all Orders
Action | Screenshot |
---|---|
1. Type ‘CR’ complete to CREATE and Type ‘PRO’ complete to PROCEDURE 2. Type ‘GetOrders A’ complete to AS 3. Provide a name for the stored procedure 4. Type ‘BE’ complete to BEGIN 5. Repeat Section B1-3 to add select statement 6. Type ‘E’ complete to END |
|
Go – Execute query |
-Code completion of keywords
CREATE PROCEDURE GetOrders AS
BEGIN
SELECT FROM dbo.[Order]
END
GO
Task 3: Expanding Wildcard Characters
It’s easy for us to work with ‘SELECT ’ but really we want to be specific about the columns we are selecting, with SQL Prompt we canexpand wildcard with our completion key.
Action | Screenshot |
---|---|
1. Place cursor to the right of ‘*’ in existing SELECT statement 2. Press ‘Tab’ to expand |
|
3. Highlight ‘CREATE’ 4. Type ‘AL’ complete to ALTER 5. Execute Query |
--Expansion of Wildcard
ALTER PROCEDURE GetOrders AS
BEGIN
SELECT [Order].OrderId ,
[Order].Address ,
[Order].City ,
[Order].Country ,
[Order].Email ,
[Order].FirstName ,
[Order].LastName ,
[Order].OrderDate ,
[Order].Phone ,
[Order].PostalCode ,
[Order].State ,
[Order].Total ,
[Order].Username FROM dbo.[Order]
END
GO
Task 4: Finding a table name
What if we wanted to connect this information to our User information? As well as mid-string matching, SQL Prompt also allows CamelCase suggestions
Action | Screenshot |
---|---|
1. Type SELECT * FROM 2. Type ‘NU’ complete AspNetUsers from CamelCase matches 3. Go – Execute Query |
--CamelCase 'I know I want a User table but what is it called'
SELECT * FROM dbo.AspNetUsers -- Use nu
GO
Task 5: Adding JOIN Conditions
there is no foreign key relationship to Order here but SQL Prompt will still suggest a join condition based upon the matching column names
Action | Screenshot |
---|---|
1. Repeat earlier steps to get SELECT * FROM dbo.[Order] 2. Type ‘JO’ complete JOIN 3. Type ‘NU’ complete AspNetUsers 4. Type ‘ON ’ complete suggested join on UserName 5. Go – Execute Query |
--Join conditions without foreign keys
SELECT * FROM dbo.[Order] JOIN dbo.AspNetUsers ON AspNetUsers.UserName = [Order].Username
GO
Task 6: Including WHERE Clause
Let’s wrap this up in a stored procure to retrieve details of a specific order and user
Action | Screenshot |
---|---|
1. Type ‘CR’ complete to CREATE 2. Type ‘PRO’ complete to PROCEDURE 3. Type ‘GetOrder @ID A’ complete to AS 4. Type ‘BE’ complete to BEGIN 5. Repeat Section F1-4 to add select statement 6. Type ‘WH’ complete to WHERE 7. Type ‘ ‘ select OrderID 8. Type ‘@’ complete to @ID 9. Type ‘E’ complete to END 10. Optionally expand the wildcard again 10. Go – Execute query |
--Code highlighting
CREATE PROCEDURE GetOrder @ID INT AS
BEGIN
SELECT * FROM dbo.[Order] JOIN dbo.AspNetUsers ON
AspNetUsers.UserName = [Order].Username
WHERE [Order].OrderId = @ID
END
GO
Task 7: Writing INSERT Statements
Next let’s add a new order record to check we can retrieve it - SQL Prompt autocompletes insert statements with column lists for us too***
Action | Screenshot |
---|---|
1. Type ‘IN’ complete to INSERT 2. Type ‘INT’ complete to INTO 3. Select Order complete to full column list 4. Update the VALUES with some made up data (N’Made up data’) 5. Ensure the UserName value is N’Administrator@test.com’ 6. Go - Execute Query |
--Insert statements completing with column list
INSERT INTO dbo.[Order]
( Address ,
City ,
Country ,
Email ,
FirstName ,
LastName ,
OrderDate ,
Phone ,
PostalCode ,
State ,
Total ,
Username)
VALUES ( N'123 Some Street' , -- Address - nvarchar(max)
N'Seattle' , -- City - nvarchar(max)
N'USA' , -- Country - nvarchar(max)
N'admin@test.com' , -- Email - nvarchar(max)
N'Tom' , -- FirstName - nvarchar(max)
N'Austin' , -- LastName - nvarchar(max)
SYSDATETIME() , -- OrderDate - datetime2
N'5551235897' , -- Phone - nvarchar(max)
N'99999' , -- PostalCode - nvarchar(max)
N'WA' , -- State - nvarchar(max)
39.99 , -- Total - decimal
N'Administrator@test.com' -- Username - nvarchar(max)
)
Let’s check it is in the Table***
Task 8: Testing our stored procedure
Lets test our stored procedure, when writing EXEC statements SQL Prompt even include a parameter list for us:
-
Run SELECT * FROM dbo.[Order] and note the OrderID from the results
-
Type ‘EX’ complete to EXEC
-
Select ‘GetOrder’
-
Edit the value to match the OrderID from I2.
-
Execute Query
--Auto-complete EXEC statements with parameter lists
EXEC dbo.GetOrder @ID = 2 -- int
Summary
There’s a quick tour of the highlights of SQL Prompt Free Edition. It’s available in Visual Studio Enterprise 2017 and it improves your productivity by speeding up SQL development tasks and reducing risk of error, so you can get back to the task in hand.