簡體   English   中英

將用戶定義的表類型與 SQL Server 中的臨時存儲過程一起使用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM