存储过程返回参数

时间:2017-11-10 15:56:30

标签: php sql-server

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”值

1 个答案:

答案 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;

行计数消息会混淆某些客户端驱动程序。结果集列名称应该是普通标识符,并且您声明的局部变量必须是您返回的变量。它可以与存储过程输出参数同名。