我正在尝试使用 Doctrine DBAL 在 MSSQL Server 上运行以下查询:
$sql = "declare @new_id_num int;
set @new_id_num = 111111;
select @new_id_num as [ID_NUM];";
$statement = $conn->prepare($sql);
$statement->execute();
$newIDNum = $statement->fetchAll();
但是,我得到的只是一个空数组$newIDNum。
我不确定该怎么做 - 查询在普通的 SQL 控制台中运行良好。跟踪似乎很好 - 您可以看到正在运行的正确查询。
我想我错过了一些简单的东西?
ZLK 是正确的,因为它返回了多个行集。
但是,不能直接从 DBAL 语句调用 ->nextRowset()。你必须获取底层的PDO语句,并调用nextRowset()
$statement->getWrappedStatement()->nextRowset();
$newIDNum = $statement->fetchAll();
谢谢本!
我分享一个带有过程的示例
$myquery = "DECLARE @return_value int,
@param1 varchar(32),
@out1 varchar(32),
@out2 varchar(32)
EXEC @return_value = MY_PROC
@param1 = N'foo',
@out1= @out1 OUTPUT,
@out2 = @out2 OUTPUT
SELECT @out1 AS out1, @out2 AS out2";
$stmt = $conn->prepare($myquery);
$stmt->execute();
$stmt->getWrappedStatement()->nextRowset();
$myOutputs = $stmt->fetchAll();