临时函数或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一个存储过程,它不会为你的查询中的正常查询提供任何优势。