使用'use'语句创建存储过程

时间:2012-11-16 15:39:38

标签: sql-server sql-server-2008

我继承了一个ms sql server 2008服务器应用程序,在检查存储过程后,我注意到它们以USE [ELECS]语句开头, ELECS 是数据库名称。

当我尝试重新创建其中一个存储过程时,我得到的是一个错误,说存储过程不能有一个use语句。

  

Msg 154,Level 15,State 1,Procedure TESTME,Line 3,USE数据库   在程序,功能或触发器中不允许使用语句。

ms sql server是否有一个允许这个的特殊功能?

4 个答案:

答案 0 :(得分:11)

您最有可能在USE / CREATE声明之上看到ALTER PROCEDURE

在这种情况下,它被用于设置应该更新过程的数据库。

它不能在存储过程中使用,但如果您希望引用其他数据库,可以在表引用中设置它。即:对于SELECT声明:

SELECT *
FROM [DatabaseName].dbo.[TableName]

答案 1 :(得分:10)

Go声明之前使用USE[databaseName]。在SQL 2005中为我工作

示例:

GO

USE [Database_Name]

Go

ALTER PROCEDURE [dbo].[Procedure_name]

答案 2 :(得分:3)

某些“顶级”语句需要首先出现在执行块中。您可以使用单词GO

封锁/关闭执行块

所以:

USE [db]
GO

CREATE PROC....

如果你在讨论sproc里面的USE语句,那么不,你不能这样做。 sproc已经由创建它的数据库确定范围。如果要访问另一个数据库,则需要使用三部分命名,例如: ELECS.dbo.tablename假设dbo是您的架构。

答案 3 :(得分:1)

没错,USE语句实际上并不是存储过程的一部分,而是它自己的语句,它指示工具(即企业管理器或查询分析器)使用哪个数据库。它永远不会发送到sql server本身,对它没有任何意义......