2014-04-14 20 views
1

我使用CakePhp作为一个小应用程序。在这个应用程序中,我存储了一些存储过程(我使用mssql)。现在我想执行这些存储过程并希望使用结果集。CakePHP mssql存储使用参数的过程(无效光标状态)

如果我没有任何参数调用存储过程我想要我想没有任何问题。但是,当我调用另一个存储过程的参数我得到错误“无效光标状态”)。我做了一些研究,并且我明白那里似乎是因为结果状态而执行多重选择。

在CakePHP我打电话:

这是没有任何问题的运行

$res = $db->query("Exec storeProcedureWithoutParams"); 

在这里,我得到的错误与光标

$res = $db->query("Exec storeProcedureWithParams 'param1'"); 

的存储过程是非常简单的:

CREATE PROCEDURE [dbo].[storeProcedureWithoutParams] 
AS 
SELECT [u1] 
     ,[u2] 
     ,[u3] 
     ,[u4] 
     ,[u5] 
     ,[u6] 
FROM [testdb].[dbo].[test] 


CREATE PROCEDURE [dbo].[storeProcedureWithParams] 
@test nvarchar(50) 
AS 
SELECT [u1] 
     ,[u2] 
     ,[u3] 
     ,[u4] 
     ,[u5] 
     ,[u6] 
FROM [testdb].[dbo].[test] 
where [u6] <> @test 

如果我直接在数据库执行这两个查询,我会得到两个返回值。第一个是select语句的结果,第二个是结果集。如果我理解它是正确的,这是问题,因为我得到两个结果(这就是为什么光标错误)。但我不知道如何解决它,我不知道如何才能得到没有返回状态的select语句的结果?

任何人都可以帮助我吗?

非常感谢!

格尔茨

V

回答

0

对不起,我迟到的答案,但我会在这里它用于测试目的,在目前还没有对这个问题的任何答案全。

不确定100%,但似乎是当查询结果中有某种消息输出时,它会给出“无效光标状态”。添加SET NOCOUNT ON它解决了我。