[英]Using a User defined table type with a temporary stored procedure in SQL Server
我在使用用戶定義的表類型作為臨時存儲過程的參數類型時遇到問題。
我在包含我們的臨時表、臨時存儲過程、...臨時任何東西的數據庫中執行所有這些操作。
代碼如下所示:
CREATE TYPE test_type AS TABLE (user int, user_value int)
GO
CREATE PROCEDURE #test_pro
@input test_type READONLY
AS
SELECT TOP 10 *
FROM @input
GO
我收到錯誤:
參數或變量@input 的數據類型無效。
有沒有辦法在我的臨時存儲過程中使用數據類型test_type
作為類型? 不幸的是,我只能訪問臨時存儲過程,而不能訪問永久版本。
附帶問題:使用函數會更好嗎?
您需要在tempdb
創建 UDT。
以下工作正常
USE tempdb
GO
CREATE TYPE test_type AS TABLE ([user] int, user_value int)
GO
--Switch database
USE msdb
GO
CREATE PROCEDURE #test_pro @input TEST_TYPE READONLY
AS
SELECT TOP 10 *
FROM @input
GO
EXEC #test_pro
GO
USE tempdb
DROP TYPE test_type
DROP PROC #test_pro
如果您在tempdb
沒有CREATE TYPE
權限,則可以改用#temp
表。
例如以下作品
CREATE PROCEDURE #test_pro
AS
SELECT TOP 10 *
FROM #input
GO
GO
CREATE TABLE #input([user] int, user_value int)
GO
EXEC #test_pro
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.