2

我需要将一个表从 Access 传递到 SQL 服务器并执行一个存储过程。

我在 Access 中使用传递查询来执行此操作。

我的直通查询:

DECLARE @MyVar TABLE { .....<variables> }

INSERT INTO @MyVar   SELECT *
    FROM [MyTable]

EXEC sproc_test @Myvar

我的存储过程:

ALTER PROCEDURE [dbo].[sproc_test] 

@MyVar TABLE(....<variables>) 

AS ...<the rest of the sproc>

这应该工作吗?我在存储过程中收到“TABLE 附近的语法不正确”错误。

4

1 回答 1

1

要接受 TABLE 变量作为存储过程的参数,您需要定义表类型并将其指定为 sproc 中的类型,而不是在 sproc 定义中将类型定义为 TABLE

例如,你最终会得到这样的东西

ALTER PROCEDURE [dbo].[sproc_test]
    @MyVar MyTableType READONLY
AS
...

查看这篇文章了解如何定义表类型等。

于 2010-10-18T10:37:09.517 回答