0

我们使用的是 SQL Server 2012 和 MySQL 6,虽然我可以直接在“数据集”窗口中编写 SQL 语句,但我似乎无法通过 CALL 传递参数来让 MySQL 存储过程工作:

实际上,我的问题是 SSRS 或 ODBC 驱动程序在发送/接收参数值时出现问题。

其他语法尝试: call shop.GetRegions() , call shop.GetRegions(?) , call shop.GetRegions(regid) , call shop.GetRegions(@regid)

这些都不起作用。

如果我使用硬编码值调用该过程,即调用 shop.GetRegions(5) - 它可以工作。

同样,如果存储过程没有参数,它可以正常工作。

任何人都可以在这个问题上给我任何真正的方向。正确语法的示例或逐步示例将不胜感激。

4

3 回答 3

2

最后我得到了几天的解决方案。我们应该从 MYSQL 在 SSMS 中创建链接服务器,然后只需要调用存储过程。调用存储过程的语法:

EXEC ('CALL GASP_sales_aps(?, ?)', @dt_start, @dt_end)AT MySQL(Linked Server Name) 

GASP_sales_aps ---->程序名称

(@dt_start,@dt_end)------> 是参数。

于 2013-05-28T12:14:26.633 回答
1

如果您不想使用链接服务器,您可以

  1. 将数据集类型设置为文本

  2. 将查询设置为

    ="exec GASP_sales_aps'," & 参数!@parameter1.Value & "','" & 参数!@parameter1.Value &"'"

于 2016-12-01T12:56:50.000 回答
0

@RegBes 是正确的,而不是链接服务器将数据集类型设置为文本。语法中的小解决方法添加括号,而不是 exec 需要使用 mysql 调用。

="call GASP_sales_aps('," & Parameters!@parameter1.Value & "','" & Parameters!@parameter1.Value &"')"
于 2018-05-22T09:27:33.940 回答