1

我正在尝试创建一个存储过程,该过程将采用定义为的表值参数:

CREATE TYPE [dbo].[address_tabletype] AS TABLE(
[CONTROL_NUMBER] [varchar](12) NULL,
[ADDRESS1] [varchar](50) NULL,
[ADDRESS2] [varchar](50) NULL,
[CITY] [varchar](50) NULL,
[STATE] [varchar](2) NULL,
[ZIP] [varchar](10) NULL
)
GO

存储过程将:

  • 拿这个数据集
  • 将其处理为单个字符串
  • 执行要求数据集位于单个字符串中的第三方函数
  • 获取结果字符串并将其返回到表值类型
  • 返回表值类型 OR 作为对本地表值类型的选择语句的结果

在做了一些研究后,我发现:

在 Access 2007 中使用 SQL Server 2008 表值参数

其中有两个兴趣点

要使用 TVP,首先要创建一个表类型并在数据库中定义其结构。

这向我暗示可以欺骗 Access 发送和接受 TVP。

顾名思义,Access 传递查询使您能够绕过 Access 数据库引擎并将 Transact-SQL 代码直接发送到 SQL Server 以执行。虽然传递查询可用于返回记录,但如果要使用表值参数,则此功能不可用。要使用 TVP,您必须将查询 Returns Records 属性设置为 No,否则 Access 将引发错误。不幸的是,这意味着您将无法通过直通查询机制返回任何信息。要从服务器获取信息,例如新的身份值,请执行单独的查询。

这向我暗示这是不可能的。

我无法对此进行测试,因为我没有 Visual Studio 来创建 C# CLR 函数,并要求验证是否值得进一步努力以及是否可行。

另一个人问了一个类似的问题,他在其中找到了 C# 的解决方法。这也可以吗?

将用户定义的表类型从 VBA 传递到 SQL

4

0 回答 0