delphi – TSQLQuery – 游标不从查询返回
发布时间:2020-12-15 09:19:30 所属栏目:大数据 来源:网络整理
导读:现在,我试图在delphi程序中删除一些旧的搜索代码,我想将搜索推送到程序正在使用的sql-server.为此,我创建了这个查询,这与我在不同的C#程序中使用的查询非常相似. 使用SQL Management Studio或C#程序查询工作得很好,但是使用Delphi我得到一个“Cursor not fro
现在,我试图在delphi程序中删除一些旧的搜索代码,我想将搜索推送到程序正在使用的sql-server.为此,我创建了这个查询,这与我在不同的C#程序中使用的查询非常相似.
使用SQL Management Studio或C#程序查询工作得很好,但是使用Delphi我得到一个“Cursor not from query from”错误. 这是查询 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,@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,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 rows affected’消息,因此可以无误地运行. 如果您知道更好的方法来运行脚本而没有错误,请告诉我. 谢谢. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |