2015-06-18 10 views
6

Ich verwende mssql Server mit yii framework Ich habe eine stored-procedure erstellt, siehe unten Code.SET NOCOUNT ON funktioniert nicht unter Ubuntu

//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(); 

Dies funktioniert unter ubuntu Umwelt in Ordnung, aber es gibt Fehler unten unter windows Umgebung.

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. 

mit einigen R & D ich, dass wir auf müssen SET NOCOUNT gefunden, so habe ich unter Anweisung geändert

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

Dies funktioniert in window in Ordnung, aber es null Ergebnis unter ubuntu Umgebung.

Bitte helfen Sie mir.

+3

Warum setzen nicht 'set nocount on' in Ihrem gespeicherten proc? – Andrew

+0

Danke Andrew, ich habe 'SET NOCOUNT ON' innerhalb der gespeicherten Prozedur gesetzt und es funktioniert jetzt. – Jayson

Antwort

3

unten ist Beispiel für nocount Einstellung über das anzuwendende Verfahren in gespeichert

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

+0

Danke Kevin, ich habe 'SET NOCOUNT ON' in die gespeicherte Prozedur gesetzt und es funktioniert jetzt. – Jayson