巧借SYNONYM讓SQL Server在用戶自定義函數中使用臨時表
作者:PetterLiu
本文主要介紹了在某些特殊的需求下,如何利用SQL Server的一個BUG來讓SQL Server在用戶自定義函數UDF中使用臨時表的方法,希望能對您有所幫助。
我們知道,SQL Server在用戶自定義函數UDF使用臨時表,這是不允許的。但是有時是為了某些特殊的場景,我們可以采用以下的方式來實現。
在查詢分析器中執行下面的代碼:
- CREATE TABLE #temp (id INT)
- GO
- INSERT INTO #temp VALUES (1),(2),(3)
- GO
- CREATE SYNONYM temp_table_synonym FOR #temp
- GO
- CREATE FUNCTION fn_select_temp_table ()
- RETURNS TABLE
- AS
- RETURN
- (
- SELECT * FROM temp_table_synonym
- )
- GO
- SELECT * FROM fn_select_temp_table()
- GO
在上面的代碼中我們使用了SYNONYM,這是關鍵之處。但實際過程中是不推薦這種做法. 這也可能是SQL SERVER另一個BUG吧。
關于SQL Server利用SYNONYM在用戶自定義函數中使用臨時表的操作就介紹到這里,如果您想了解更多關于SQL Server數據庫的知識,可以看一下這里的文章:http://database.51cto.com/sqlserver/,您的收獲就是對我們工作的***肯定!
【編輯推薦】
責任編輯:趙鵬
來源:
博客園