gpt4 book ai didi

delphi - TSQLQuery - 查询未返回游标

转载 作者:行者123 更新时间:2023-12-03 15:24:19 25 4
gpt4 key购买 nike

现在,我正在尝试删除delphi程序中的一些旧搜索代码,并且我想将搜索推送到程序正在使用的sql服务器。为此,我创建了这个查询,它与我在不同的 C# 程序中使用的查询非常相似。

使用 SQL Management Studio 或 C# 程序,查询工作得很好,但使用 Delphi 时,我收到“光标未从查询返回”错误。

这是查询

DECLARE @SearchString NVARCHAR(MAX);
SET @SearchString = ':Param1';
IF @SearchString = '' SET @SearchString = '%';

--Table for splitted values
DECLARE @SearchItms TABLE
(
Item NVARCHAR(MAX)
)

--Split Operator
DECLARE @SplitOn NVARCHAR(MAX)
SET @SplitOn = ' '; --Split Keywords on space

--Splitting
While (Charindex(@SplitOn,@SearchString)>0)
Begin
Insert Into @SearchItms (Item)
Select ('%' + Substring(@SearchString,1,Charindex(@SplitOn,@SearchString)-1) + '%')

Set @SearchString = Substring(@SearchString,Charindex(@SplitOn,@SearchString)+1,len(@SearchString))
End

--Add last Item
Insert Into @SearchItms (Item)
Select ('%' + @SearchString + '%')

--Select fitting items
SELECT MyTable.*
FROM MyTable INNER JOIN SecondTable ON (MyTable.Key = SecondTable.Key)
WHERE
NOT EXISTS(
SELECT * FROM @SearchItms WHERE NOT(
(OneField IS NOT NULL AND OneField LIKE Item)
OR (OneDateField IS NOT NULL AND (convert(varchar, OneDateField, 104) LIKE Item) OR (convert(varchar, OneDateField, 114) LIKE Item ) )
OR (AnotherField IS NOT NULL AND AnotherField LIKE Item)
OR (LastField IS NOT NULL AND LastField LIKE Item)
)
)

一件奇怪的事情是,当我删除时

--Add last Item
Insert Into @SearchItms (Item)
Select ('%' + @SearchString + '%')

我没有收到“光标未从查询返回”错误。但是使用搜索字符串时,我在 SQL Management Studio 中只得到 10 个结果,而在 Delphi 中却得到了数据库中的所有项目,就像搜索没有执行任何操作一样。

这种情况也会发生在一个简单的测试程序中,我只有一个 Form、一个 TSQLConnection、TSQLQuery、TDataSetProvider 和一个 ClientDataSet。

有人可以告诉我这里出了什么问题吗?由于该查询在其他环境下工作正常,我认为应该没问题。

非常感谢您的帮助。

最佳答案

正如 ldsandon 在他的帖子中提到的,问题似乎是,它不是一个简单的查询,而是一个完整的脚本。但由于其他 dbExpress 单元似乎都无法处理这个问题,所以我找到了一种让它工作的方法。

只需将 SET NOCOUNT ON; 添加到脚本的开头,然后使用 SET NOCOUNT OFF; 关闭脚本

我认为这会抑制插入中的“xx rowseffected”消息,因此可以无错误地运行。

如果您知道运行脚本而不出错的更好方法,请告诉我。

谢谢。

关于delphi - TSQLQuery - 查询未返回游标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6490787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com