我将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 :(得分:0)
对于迟到的回答感到抱歉,但我会在此处添加它以用于测试目的,因为此问题没有完整答案。
不确定100%,但似乎当查询结果中有某种消息输出时,它会给出“无效的游标状态”。添加SET NOCOUNT ON
它解决了我。