Sql server 列值作为存储过程输入

Sql server 列值作为存储过程输入,sql-server,tsql,stored-procedures,Sql Server,Tsql,Stored Procedures,输入SP参数时,我有以下代码: USE [MDAmanager] GO DECLARE @return_value int EXEC @return_value = [dbo].[spCougarExport] @PropertyCodeString = NULL, @Date = NULL, @InferDate = NULL, @TransactionCodeString = NULL SELECT 'Return

输入SP参数时,我有以下代码:

USE [MDAmanager]
GO

DECLARE @return_value int

EXEC    @return_value = [dbo].[spCougarExport]
        @PropertyCodeString = NULL,
        @Date = NULL,
        @InferDate = NULL,
        @TransactionCodeString = NULL

SELECT  'Return Value' = @return_value

GO
对于
@PropertyCodeString
,我希望传递包含所有属性代码的单独表中的值

下面是属性代码的示例

我试图实现的是让SP始终返回所有属性,并且在添加新属性时不需要更新属性代码


如果您能提供任何帮助或指导,我们将不胜感激。

如果您能够修改SP,则可以使用用户定义的表格类型,例如

CREATE TYPE [dbo].[PropertyCode_UDT] AS TABLE
(   [PropertyCode] [bigint] NOT NULL
)
GO

DECLARE @PCTab [dbo].[PropertyCode_UDT]
;

INSERT INTO @PCTab
(   [PropertyCode]
)
SELECT PC.[PropertyCode]
FROM [dbo].[PropertyCode] PC
;

DECLARE @return_value int

EXEC    @return_value = [dbo].[spCougarExport]
    @PropertyCode  = @PCTab,
    @Date = NULL,
    @InferDate = NULL,
    @TransactionCodeString = NULL
;
您的Sp需要修改以接受@PropertyCode的正确类型,您只需在该表上的Sp中加入查询即可获得所有属性代码

乙二醇


谢谢那么,有没有一种不修改SP的相对简单的方法?还是这条路比较容易?我从未制作过SP,因此我将尝试按上述方式进行修改。我相信这是将值列表传递给SP的唯一方法。如果您对此答案感到满意,请按此进行标记。谢谢
CREATE PROCEDURE [dbo].[spCougarExport]
    @Date [date]
,   @InferDate [date]
,   @TransactionCodeString [nvarchar] (MAX)
,   @PropertyCode PropertyCode_UDT READONLY
AS BEGIN;
.......
SELECT ...
FROM @PropertyCode atPC