2010-04-19 39 views
10

我一直在玩存储过程。我很激动,我很容易就选择了它的基础。 (我也会尽快尝试触发器)。现在,我想知道如何将SPROC保存在存储过程文件夹(Programmability - > Stored Procedure)下,以便我可以通过名称(最终从我的C#应用​​程序)访问它。到目前为止,当我按下保存图标时,我建议保存整个查询。这不是我想要的。如何保存存储过程?

感谢您的帮助

回答

18

实际上,您必须运行CREATE PROCEDURE命令才能生成存储过程。

Create Procedure - MSDN

下面是一个例子,直接从MSDN页:

USE AdventureWorks; 
GO 

-- If procedure exists already, drop it 
IF OBJECT_ID ('HumanResources.uspGetAllEmployees', 'P') IS NOT NULL 
    DROP PROCEDURE HumanResources.uspGetAllEmployees; 
GO 

-- Create (or Re-create) the procedure 
CREATE PROCEDURE HumanResources.uspGetAllEmployees 
AS 
    SET NOCOUNT ON; 
    SELECT LastName, FirstName, JobTitle, Department 
    FROM HumanResources.vEmployeeDepartment; 
GO 

请记住,您创建存储过程后,你将不得不Right Click -> Refresh新程序出现Stored Procedure文件夹。

我还建议将* .sql文件保存在某处,以便在需要再次运行的情况下将CREATE PROCEDURE脚本保存在某处。

+0

+1对于* .sql建议。 – systempuntoout 2010-04-19 19:54:32

+0

@Justin Niesser(和所有):谢谢,它工作。但是,我很抱歉,我没有真正得到您的建议。我需要将CREATE PROCEDURE脚本保存在某个地方以防我需要再次运行它。存储过程?每次需要使用它时,我是否需要创建它? – Richard77 2010-04-19 20:04:05

+0

每次使用它时都不需要创建它,但是如果需要修改它或重建数据库......备份起来很不错。您还可以继续使用* .sql文件进行更改并删除/重新创建该过程,而不是运行ALTER PROCEUDRE命令。 – 2010-04-19 20:07:40

4

您必须实际运行create proc语句。

+0

@Mladen Prajdic:我使用EXEC命令运行它,它工作。当我没有在Stored Procedure文件夹下看到SPROC时,我虽然没有创建它。所以我试图再次创建它,但我被告知具有相同名称的对象已经存在。我想我能够创造它。但是,为什么它在可编程性 - >存储过程文件夹下不可见? – Richard77 2010-04-19 19:46:40

+0

@ Richard77,你需要点击刷新按钮才能看到它。突出显示“存储过程”文件夹,然后单击刷新,您应该可以看到它。 SQL Server Management Studio(也可能是服务器资源管理器)不会自动刷新。 – 2010-04-19 19:55:22

0

您需要运行CREATE PROCEDURE命令。
尝试用这种简单的存储过程例子:

CREATE PROCEDURE TestSP 
AS 
SELECT GETDATE() AS MyDate 
GO 
0

基础上OP的评论:

我使用EXEC命令来运行它,它 工作。当我没有在Stored Procedure文件夹下看到SPROC 时,我仍然没有创建它。所以我试着 再次创建它,但我被告知 已经存在具有相同名称 的对象。我想我能够 创建它。但是,为什么它不可见 下的Programmability - >存储 过程文件夹?

当您第一次运行存储过程CREATE PROCEDURE....时,可能需要刷新SSMS中的存储过程列表。右键点击REFRESH。