gpt4 book ai didi

sql - 无法使用表输出参数创建存储过程

转载 作者:行者123 更新时间:2023-12-02 15:09:45 24 4
gpt4 key购买 nike

我有这个代码:

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[GetProfitDeals]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[GetProfitDealsVar2]
GO

IF EXISTS(SELECT 1 FROM sys.types WHERE name = 'TableOrderType' AND is_table_type = 1 AND SCHEMA_ID('dbo') = schema_id)
DROP TYPE [dbo].[TableOrderType];

CREATE TYPE TableOrderType AS TABLE(
Order_ID int NOT NULL,
Order_AccNumber int NOT NULL,
Order_OpenDate datetime NULL,
Order_CloseDate datetime NULL,
Order_Profit float NULL
);
GO

CREATE PROCEDURE [dbo].[GetProfitDeals](@OpenDate datetime = NULL, @CloseDate datetime = NULL, @MinProfit float = NULL, @out TableOrderType OUTPUT READONLY)
AS
INSERT INTO @out
SELECT * FROM [Orders]
WHEN [Orders].[OpenDate] >= @OpenDate
GO

但我收到错误“有关构造“READONLY”的语法不正确”。我该如何解决这个问题,因为我真的需要一个 OUTPUT 表参数。

最佳答案

表参数是只读的。您无法选择它们。 Use Table-Valued Parameters :

Table-valued parameters must be passed as input READONLY parameters to Transact-SQL routines. You cannot perform DML operations such as UPDATE, DELETE, or INSERT on a table-valued parameter in the body of a routine.

Table-Valued Parameters :

You cannot return data in a table-valued parameter. Table-valued parameters are input-only; the OUTPUT keyword is not supported.

阅读Arrays and Lists in SQL Server对替代方案进行全面讨论。

关于sql - 无法使用表输出参数创建存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19270727/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com