3

我正在尝试从 delphi7 调用存储过程。该过程还包含具有默认值的参数。据我了解,我可以在不显式传递参数值的情况下调用此过程,并具有默认值。这就是我在 delpho 代码中所做的。

但..

结果似乎令人困惑。我跳过的参数确实得到了一些价值。那是下一个参数的值。它最终出现了最后一个没有得到它的值的参数。

我试图搜索并找到了这篇文章。所以,事实证明,delphi 忽略了我给 TADOStoredProc 参数的名称,只是按照我将它们添加到参数集合中的顺序传递它们,即最后一个参数(幸运的是它也是可选的,也不例外被抛出)没有传递给程序。

我看到@crefird 的答案,建议使用TADOQuery 而不是TADOStoredProc。但我不喜欢这种方法。我最好为所有参数赋予一定的值,并且根本不要使用可选参数功能。

那么,在使用 TADStoredProc 时,是否有更好的解决方案让 delphi 通过名称为存储过程指定参数?

4

1 回答 1

0

您可以在设计时创建一个 TADStoredProc 并让它填充其参数集合。如果您没有表格可以将其放在上面,则可以使用 DataModule。

多年前我学到了和你一样的教训——参数名称被忽略了。在过去十年中,通过将任何新的 SP 参数放在参数列表的 END 处,并在需要时使它们成为可选参数,维护和发展使用 Delphi 和 SQL Server 的代码库变得更加容易。

我似乎有人制作了 TADOStoredProc 对象,然后调用它的 refreshParams (或 refreshParameters - 不确定名称)方法。这将涉及整个额外的数据库之旅,这可能是可以避免的。

于 2012-11-28T07:30:50.167 回答