【发布时间】:2018-08-17 10:19:29
【问题描述】:
我有一个存储过程,它在调用时会更新几个表并最终返回一个整数值。
当我使用 SQL Pro 工具调用此存储过程时,我得到了预期的结果。该工具自动生成的SQL是这样的;
DECLARE @return_value int
EXEC @return_value =
dbo.GetNextReference
@c_tableName = 'prp',
@c_offYear = 'rcs14'
SELECT
'Return Value' = @return_value
但是,当我尝试使用 PHP PDO 驱动程序执行此操作时,我似乎无法获得相同的结果或任何结果。
这是我目前的代码;
$conn = $this->getPDO();
$sql = "CALL GetNextReference (? , ?)";
$stmt = $conn->prepare($sql);
$tbl = 'prp';
$year = "rcs14";
$stmt->execute([$tbl, $year]);
$results = $stmt->fetchAll();
语句执行没有任何错误,但结果返回为空数组。
我错过了什么?
对不起,我不能发布实际的存储过程,因为我不允许。
【问题讨论】:
-
不要在 SP 上使用返回值,使用
OUTPUT参数。 -
如果您还没有这样做,请将
SET NOCOUNT ON添加到存储的过程中,以便不会返回受影响的行消息。这可能会干扰未正确编码以处理它们的客户端的结果集处理。 -
嗨@Larnu,你能给我举个例子吗?
-
对不起,我忘了说,修改存储过程目前不是一种选择,因为我们有很多现有的系统依赖它。
-
如果可以的话,我真的建议您对更改它进行反馈。
标签: php sql-server pdo