gpt4 book ai didi

sql-server - 我可以让 TADOStoredProc 按名称将给定参数应用到目标过程吗?

转载 作者:行者123 更新时间:2023-12-03 06:46:37 25 4
gpt4 key购买 nike

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

但是..

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

我尝试搜索并发现this文章。所以,事实证明,delphi 忽略了我为 TADOStoredProc 的参数指定的名称,只是按照我将它们添加到参数集合中的顺序传递它们,即最后一个参数(幸运的是,它也是可选的) 并且没有抛出异常)没有传递给过程。

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

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

最佳答案

您可以在设计时创建一个 TADOStoredProc 并让它填充其参数集合。如果您没有放置它的表单,您可以使用 DataModule。

几年前我学到了和你一样的教训 - 参数名称被忽略。通过将任何新的 SP 参数放在参数列表的末尾,并且如果需要,将它们设为可选,可以更轻松地维护和扩展过去十年中使用 Delphi 和 SQL Server 的代码库。

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

关于sql-server - 我可以让 TADOStoredProc 按名称将给定参数应用到目标过程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12402734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com