SET NOCOUNT ON在ubuntu下无效

时间:2015-06-18 12:39:21

标签: php sql-server stored-procedures yii

我正在使用mssql服务器yii framework 我创建了一个stored-procedure,请参阅下面的代码。

 //Call Store procedure to get data
 $sql = "EXECUTE IESReportData @assessmentId=:assessmentId, @queId=:queId,@instanceId=:instanceId";
 //set database connection and start the yii query builder to be executed.
 $connection = Yii::app()->db;
 $command = $connection->createCommand($sql);
 $command->bindValue(":assessmentId", $assessmentId);
 $command->bindValue(":queId", "");
 $command->bindValue(":instanceId", "$instanceId");
 $Reportresults = $command->queryAll();

这在ubuntu环境下工作正常,但在windows环境下会出现错误。

Fatal error: Uncaught exception 'CDbException' with message 'CDbCommand failed to execute the SQL statement: SQLSTATE[IMSSP]: The active result for the query contains no fields.

与一些R& D我发现我们需要设置NOCOUNT 所以我更改了以下声明

$sql = "SET NOCOUNT ON EXECUTE IESReportData @assessmentId=:assessmentId, @queId=:queId,@instanceId=:instanceId";

这在window中工作正常,但它在ubuntu环境下提供了null结果。

请帮帮我。

1 个答案:

答案 0 :(得分:3)

下面的

是在存储过程中设置nocount的示例



SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE <Procedure_Name, sysname, ProcedureName>
-- Add the parameters for the stored procedure here
<@Param1, sysname, @p1> <Datatype_For_Param1, , int> = <Default_Value_For_Param1, , 0>,
<@Param2, sysname, @p2> <Datatype_For_Param2, , int> = <Default_Value_For_Param2, , 0>
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

-- Insert statements for procedure here
SELECT <@Param1, sysname, @p1>, <@Param2, sysname, @p2>
END`enter code here`
GO
&#13;
&#13;
&#13;