为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始终返回所有属性,并且在添加新属性时不需要更新属性代码。
我们将不胜感激。
答案 0 :(得分:1)
假设您能够修改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内加入查询即可获取所有属性代码
例如
CREATE PROCEDURE [dbo].[spCougarExport]
@Date [date]
, @InferDate [date]
, @TransactionCodeString [nvarchar] (MAX)
, @PropertyCode PropertyCode_UDT READONLY
AS BEGIN;
.......
SELECT ...
FROM @PropertyCode atPC