临时函数或T-SQL中的存储过程

有没有机会在MS SQL 2005上创build临时存储过程或函数? 我只想在我的查询中使用这个存储过程,所以执行后它将不见了。

我有一个查询,我想执行一些数据。 但是对于每个表我都会处理这个命令,我需要改变它的一些部分。 所以我想我会创build一个临时的SP,它会返回我提供的参数(比如表名等等)的查询,而不是EXEC执行这个查询。

而这个存储过程将不会对我有用,所以我想暂时使用它,以便当我结束执行我的查询 – 它将消失。

重新编辑 – 这听起来像你应该使用sp_ExecuteSQL对包含TSQL的(参数化的) nvarchar

在sp_ExecuteSQL上search; 一个简单的例子:

 DECLARE @SQL nvarchar(4000), @Table varchar(20) = 'ORDERS', @IDColumn varchar(20) = 'OrderID', @ID int = 10248 SET @SQL = 'SELECT * FROM [' + @Table + '] WHERE [' + @IDColumn + '] = @Key' EXEC sp_executesql @SQL, N'@Key int', @ID 

请注意,表名和列名必须连接到查询中,但是可以参数化值(例如@Key )。


有一个临时存储过程 – 但它是每个连接,而不是每个sp。

然而,你可能想看看公用表expression式 – 它们可能就是你以后的样子(尽pipe你只能从中读一次)。

也许如果你能澄清你想要什么?

这个问题有点老,但其他答案没有提供创build临时程序的语法。 语法与临时表相同:#本地临时对象的名称,##全局临时对象的名称。

 CREATE PROCEDURE #uspMyTempProcedure AS BEGIN print 'This is a temporary procedure' END 

这在官方文档的“程序名称”一节中有描述。 http://technet.microsoft.com/en-us/library/ms187926%28v=sql.90%29.aspx

我正在使用这种技术去重复我原始T-SQLunit testing的代码。 一个真正的unit testing框架会更好,但是这比什么都没有好,“垃圾收集”本身之后。

只需在查询中使用存储过程的SQL即可。 不需要在数据库中创build一个存储过程,它不会为你的查询中的正常查询提供任何优势。