带参数的Cakephp mssql存储过程(无效的游标状态)

时间:2014-04-14 16:18:40

标签: sql-server cakephp stored-procedures return-value

我将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

1 个答案:

答案 0 :(得分:0)

对于迟到的回答感到抱歉,但我会在此处添加它以用于测试目的,因为此问题没有完整答案。

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