Sql server 如何在带有JSON数据的sp_executesql中使用表变量

Sql server 如何在带有JSON数据的sp_executesql中使用表变量,sql-server,Sql Server,你好,我正在尝试使用sp_executesql DECLARE@filterBusiness表 ( [BusinessID]INT NULL ); 插入@filterBusiness ( [商业ID] ) 挑选 [商业ID] 来自OPENJSON(@jsonData) 具有 ( [BusinessID]INT'$.BusinessID' )AS[公共汽车] 声明@sqlQuery NVARCHAR(max)=” 选择@sqlQuery='从[Training].[Training]中选择* 其中

你好,我正在尝试使用sp_executesql

DECLARE@filterBusiness表
(
[BusinessID]INT NULL
);
插入@filterBusiness
(
[商业ID]
)
挑选
[商业ID]
来自OPENJSON(@jsonData)
具有
(
[BusinessID]INT'$.BusinessID'
)AS[公共汽车]
声明@sqlQuery NVARCHAR(max)=”
选择@sqlQuery='从[Training].[Training]中选择*
其中1=1'
如果存在(从@filterBusiness中选择*)
开始
在中设置@whereClause=CONCAT(@whereClause'和[BusinessID](从@filterBusiness中选择[BusinessID]);
结束
EXEC sp_executesql@sqlQuery,
N'@filterBusiness TABLE READONLY',@filterBusiness`

您必须定义用户定义的表类型,然后将其传递给sp_executesql

将类型BUSINESSTYPE创建为表
(
[BusinessID]INT NULL
);
声明@whereClause VARCHAR(5000)=”
声明@filterBusiness BUSINESSTYPE
插入@filterBusiness
(
[商业ID]
)
挑选
1.
从@filterBusiness中选择*
声明@sqlQuery NVARCHAR(max)=”
选择@sqlQuery='从[Training].[Training]中选择*
其中1=1'
如果存在(从@filterBusiness中选择*)
开始
在中设置@whereClause=CONCAT(@whereClause'和[BusinessID](从@filterBusiness中选择[BusinessID]);
结束
EXEC sp_executesql@sqlQuery,
N'@filterBusiness BUSINESSTYPE READONLY',@filterBusiness

您必须定义用户定义的表类型,然后将其传递给sp_executesql

将类型BUSINESSTYPE创建为表
(
[BusinessID]INT NULL
);
声明@whereClause VARCHAR(5000)=”
声明@filterBusiness BUSINESSTYPE
插入@filterBusiness
(
[商业ID]
)
挑选
1.
从@filterBusiness中选择*
声明@sqlQuery NVARCHAR(max)=”
选择@sqlQuery='从[Training].[Training]中选择*
其中1=1'
如果存在(从@filterBusiness中选择*)
开始
在中设置@whereClause=CONCAT(@whereClause'和[BusinessID](从@filterBusiness中选择[BusinessID]);
结束
EXEC sp_executesql@sqlQuery,
N'@filterBusiness BUSINESSTYPE READONLY',@filterBusiness