2

从 VS2012 我创建了一个数据库项目并创建了广告自定义类型

CREATE TYPE dbo.TypeProductCategoryTable AS TABLE
    ( ProductID int, CategoryID int )

现在,当我使用这种类型编写存储过程时,出现编译错误

sql71501 sql 参数对内置类型的引用未解析

程序

CREATE PROCEDURE [dbo].[usp_ProductCategory_Mapping]
    @tvProdCat dbo.ProductCategoryTableType READONLY
AS
insert into tProductCategories(ProductId,CategoryId)
    SELECT @tvProdCat
RETURN 0

如何处理?我们可以在 Visual Studio 数据库项目上创建自定义类型吗

4

2 回答 2

0

您可以在 Visual Studio 项目中使用预部署脚本。为此,您需要在 VS 中添加 2 个文件: 1. 在 VS 的数据库项目中创建 UserDefinedTableType.sql 并将创建表类型的脚本放入此脚本中。2.在您的数据库项目中添加 UserScripts -> pre-Deployment script 并在此处调用步骤 1 中的脚本。使用此代码: :r .\Scripts\Pre-Deployment\UserDefinedTableType.sql

未解决的引用将通过此解决方案解决

于 2015-05-07T14:04:21.583 回答
0

我遇到了这个问题,并意识到 TVP 的构建节点以某种方式插入到我的 .sqlproj 文件中使用它的 SP 下方。一旦我将 TVP 移到 SP 上方,我不再收到 VS 中的错误,并且项目按预期部署,没有错误。我以前没有意识到 .sqlproj 中构建节点的顺序很重要,但显然 DACPAC 编译器并不是为了智能地确定构建过程的顺序而回想起来的。我宁愿拥有这种控制权,即使它在这种情况下会让我失望。

于 2022-01-18T14:55:49.357 回答