2016-05-31 64 views
-2

我尝试使用下面的SQL脚本来检索employeeIDs:SQL脚本困扰

SELECT * from tblEmployees 
GO 
CREATE PROCEDURE spGetEmployeeID10 
AS 
BEGIN 
    SELECT employeeID 
    FROM tblEmployees 
END 

脚本运行,但所有列的名称返回整个表:雇员,姓氏,名字,评论。但是,它只应该返回employeeID列,否?我是否犯了一个明显的错误?我正在使用SQL Server Management Studio 2014.另外,无论何时修改脚本并尝试重新运行它,我都会收到一条错误消息,说明该脚本已经退出。有没有办法简单地编辑脚本并用相同的名称重新运行脚本? 谢谢!

+3

你有一个存储过程,而不是脚本。这是两回事。您不能用CREATE语句修改现有的存储过程 - 您需要使用ALTER语句。 – Tim

+0

@TIm非常感谢!我是SQL新手,非常感谢您的反馈! – Johnathan

回答

0

“我犯了一个明显的错误吗?”是的,恐怕是这样,第一个select语句返回所有内容,第二个语句创建一个存储过程。我最好的猜测是你想要这个:

CREATE PROCEDURE spGetEmployeeID10 
AS 
BEGIN 
    SELECT employeeID 
    FROM tblEmployees 
    --my guesswork come further and I added next line 
    where employeeID = 10 
END 
GO 

EXEC spGetEmployeeID10 
GO 
+0

非常感谢!我是SQL新手,我正在积极学习! :) – Johnathan

0

你有什么是两个不同的操作正在进行。

第一个是你的select *,它将返回所有内容。第二个是存储过程的创建,它不会返回任何东西。这就是为什么你看到select *结果而不是存储过程查询中的结果。