使用SQL任务向存储过程传递参数

5

我正在尝试向我设置的存储过程传递变量,我已经在参数映射选项卡中将它们映射了出来。我认为我的语法可能有误,但是我找不到解决方法。

    EXEC [dbo].[proc_GetQuarterlyEmailId] 
    @employeeNumber = ?, 
    @employeeFirstName = ?, 
    @employeeLastName = ?, 
    @employeeEmail = ?

我遇到的错误是:
执行查询“EXEC [dbo].[proc_GetQuarterlyEmailId] @employeeNu...”失败,错误信息为:“无法找到存储过程 ''。”。可能的失败原因:查询存在问题,“ResultSet”属性未正确设置,参数未正确设置,或连接未正确建立。
如果我从存储过程中删除参数并删除参数映射,则可以完美运行,所以我知道它可以找到它。我正在使用ADO.NET连接。
2个回答

5

尝试不列出参数执行SP:

EXEC proc_GetQuarterlyEmailId ?, ?, ?, ?

我总是使用这样的语法,从未遇到过问题...
如果在提供参数时过程返回一些行,则必须将属性“Result Set”更改为除“None”以外的其他值...
参数映射因您使用的连接类型而异。 如果您使用OLE DB,则必须使用问号表示参数,如我昨天所提到的。对于“Parameter Name”列中的映射,您必须使用数字0、1、2等。 我附加了一个示例图片,“Result Set” = “None”,因为我有一个不返回任何结果集的SP。

General Tab Parameter Mapping Tab

还请查看此链接:https://msdn.microsoft.com/en-us/library/ms140355(v=sql.105).aspx

谢谢你的回答!但我尝试过了,它仍然给我同样的错误。结果集设置为“单行”,因为这是当存储过程工作时我得到的返回结果。 - rycekrispies
你是否正在使用“执行 SQL 任务”转换?如果是,请添加“参数映射”和“结果集”设置的截图,因为这些在过去都曾给我带来问题。 - MiguelH
1
参数映射在不同的连接类型上有所不同。 - Žiga Prajs

0

另外,BypassPrepare 必须为 FALSE,否则会出现令人困惑的“参数设置不正确”的错误。我习惯将其设置为 TRUE。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接