【问题标题】:Execute stored procedure in SQL Server using CodeIgniter SQLSRV使用 CodeIgniter SQLSRV 在 SQL Server 中执行存储过程
【发布时间】:2020-08-24 20:30:13
【问题描述】:

我在 SQL Server 中有一个包含 4 个插入进程的存储过程:

  • 流程 1,从 Chief 1 查找数据并将其插入存档表
  • 流程 2,从 Chief 2 中查找数据并将其插入到存档表中
  • 流程 3,从 Chief 3 中查找数据并将其插入到存档表中
  • 进程 4,从 Chief 4 中查找数据并将其插入到存档表中

所有进程都在存储过程中工作,因此应用程序只调用运行一个存储过程。

当我使用 CodeIgniter (SQLSRV) 执行命令时:

EXEC getwage_bcmbs @date_start = '2020-04-28' 

该进程仅适用于进程#2。那么结果Archive表中只有2条记录。

但是,当我在 SQL Server Management Studio 中执行命令时,进程正常运行到进程 4。结果是 4 条记录。

请问有人可以帮助我吗?问题是什么?是存储过程出了问题还是SQLSRV内部出了问题?

  • PHP 版本 7.2.18-1 + Ubuntu18.04.1 + deb.sury.org+1
  • SQL Server 2016

【问题讨论】:

  • 我们需要 SP 的具体细节来了解这会如​​何发生。
  • 感谢@Dale 的回复,问题已经通过添加“SET NOCOUNT ON”解决了。

标签: sql-server codeigniter stored-procedures


【解决方案1】:

解决了 我目前需要添加

SET NOCOUNT ON

到我的存储过程。

在我的SP中,我创建了插入临时表的过程,当继续处理2时,临时表将被删除。 当临时表返回 0 数据要删除时,则 SQL Server 返回消息,由 SQLSRV 作为一个完整的进程消息处理。然后进程在进程2中停止。

这可能是我从 SQLSRV 调用它时我的 SP 没有完全运行的原因。但是当我使用 SMSS 或 SQL Server 客户端程序调用它时通常会运行

感谢 StackOverflow

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-05
    • 2016-10-21
    • 2021-03-08
    相关资源
    最近更新 更多