SQL人写了一个存储过程,假设它返回一个受请求影响的项目列表。
如果我在SQL Server Management Studio中调用存储过程,如下例所示,我可以在以别名命名的列中看到列表
DECLARE @RETURN_CLIENTS_SET nvarchar(max)
EXEC [dbo].[Sp_IHM_SET_FORMS_INDPROD_CLOSE_DATE]
@Date = N'20171110',
@RETURN_ITEMS = @RETURN_ITEMS OUTPUT
SELECT @RETURN_ITEMS as N'@RETURN_ITEMS'
现在,如果我尝试通过PHP显示结果,就像我为简单的表格提取一样
$query_setdata = "DECLARE @RETURN_CLIENTS_SET nvarchar(max)
EXEC [dbo].[Sp_IHM_SET_FORMS_INDPROD_CLOSE_DATE]
@Date = N'20171110',
@RETURN_ITEMS = @RETURN_ITEMS OUTPUT
SELECT @RETURN_ITEMS as N'@RETURN_ITEMS'";
$prep_setdata = sqlsrv_prepare($conn, $query_setdata);
if(sqlsrv_execute($prep_setdata))
{
while($data = sqlsrv_fetch_array($prep_setdata,SQLSRV_FETCH_ASSOC)) {
echo $data['@RETURN_ITEMS'];
}
}
else {
die(print_r( sqlsrv_errors(), true));
}
存储过程在数据库中执行其操作(更改某些项目的某些标志),我没有错误,但它没有显示“RETURN_ITEMS”值
答案 0 :(得分:2)
尝试这样的批次:
SET NOCOUNT ON;
DECLARE @RETURN_ITEMS nvarchar(max);
EXEC [dbo].[Sp_IHM_SET_FORMS_INDPROD_CLOSE_DATE]
@Date = N'20171110',
@RETURN_ITEMS = @RETURN_ITEMS OUTPUT;
SELECT @RETURN_ITEMS as RETURN_ITEMS;
行计数消息会混淆某些客户端驱动程序。结果集列名称应该是普通标识符,并且您声明的局部变量必须是您返回的变量。它可以与存储过程输出参数同名。