What will be the result of the following T-SQL?
DECLARE @t TABLE (CustomerId int, FirstName varchar(50), LastName varchar(50))
SELECT TOP(100) CustomerId, FirstName, LastName INTO @t
FROM Customer WHERE Country Like 'U%'
Answer
Answer
Watch out, there's a trap. SELECT INTO creates new table and inserts data into it. The problem here is that you cannot create table variable @t. It already exists. You can't use SELECT INTO with table variables at all. You can use it to create a table or a temporary table.
The result of the T-SQL will be Incorrect syntax near '@t'.
Now how to fix it?
You could use something like this:
DECLARE @t TABLE (CustomerId int, FirstName varchar(50), LastName varchar(50))
INSERT INTO @t (CustomerId, FirstName, LastName)
SELECT TOP(100) CustomerId, FirstName, LastName FROM Customer WHERE Country Like 'U%'
The columns are defined explicitly in INSERT INTO
on purpose. You could ommit them but it's not a good practice as if someone changes the order of the columns in the table variable, you could get unexpected errors or side effects.
Finally, will the code work with INSERT INTO
? It's a good question that is hard to answer without knowing whether the table Customer exists and what is its structure...
Related Databases job interview questions
What is Microsoft SQL Server Management Studio and what is it good for?
DatabasesQuality Assurance (QA) JuniorWhat is a difference between DROP TABLE and TRUNCATE TABLE and DELETE FROM?
Databases MediorWhat is the difference between OLAP and OLTP? When is each used?
Databases MediorDescribe the difference between optimistic and pessimistic locking.
Databases MediorIn databases, what is the difference between a delete statement and a truncate statement?
Databases Medior