批处理中的SQL查询don';不执行

批处理中的SQL查询don';不执行,sql,sql-server-2008,foxpro,Sql,Sql Server 2008,Foxpro,我的项目是在visualfoxpro中,我使用mssqlserver2008。当我批量启动sql查询时,有些查询不会执行。但是,不会抛出任何错误。我还没有使用BEGIN TRAN和ROLLBACK。该怎么办 这要看情况了。。。您没有发布任何查询样本来说明可能的失败。然而,对于VFP到SQL,我有一个很好的响应,那就是构建一个字符串(为了可读性,我更喜欢使用TEXT/ENDTEXT),然后将整个值发送到SQL。如果有任何基于“参数”的值来自本地VFP,则可以使用“?”指示它将来自SQL的变量。然后

我的项目是在visualfoxpro中,我使用mssqlserver2008。当我批量启动sql查询时,有些查询不会执行。但是,不会抛出任何错误。我还没有使用BEGIN TRAN和ROLLBACK。该怎么办

这要看情况了。。。您没有发布任何查询样本来说明可能的失败。然而,对于VFP到SQL,我有一个很好的响应,那就是构建一个字符串(为了可读性,我更喜欢使用TEXT/ENDTEXT),然后将整个值发送到SQL。如果有任何基于“参数”的值来自本地VFP,则可以使用“?”指示它将来自SQL的变量。然后您可以在单个查询中批处理所有查询,而不是在多个单独查询中批处理所有查询

vfpField = 28
vfpString = 'Smith'

text to lcSqlCmd noshow
   select 
         YT.blah, 
         YT.blah2
      into
         #tempSqlResult
      from 
         yourTable YT
      where 
         YT.SomeKey = ?vfpField

   select  
         ost.Xblah, 
         t.blah, 
         t.blah2
      from 
         OtherSQLTable ost
            join #tempSqlResult t
               on ost.Xblah = t.blahKey;

   drop table #tempSqlResult;
endtext 

nHandle = sqlconnect( "your connection string" )
nAns = sqlexec( nHandle, lcSqlCmd, "LocalVFPCursorName" )
不,我这里没有错误捕获,只是为了显示原理和可读性。我知道示例查询可以通过联接轻松完成,但如果您正在处理一些预聚合,并且希望将它们放入临时工作区,如查询中的本地化VFP游标,作为下一步使用,那么这将通过#tempSqlResult as“#”实现指示当前连接句柄所在的SQL上的临时表

如果希望从单个SQL调用返回多个结果集,也可以这样做,只需添加另一个没有“into#tmpSQLblah”上下文的查询即可。然后,这些结果游标的所有实例将基于“LocalVFPCursorName”前缀返回到VFP。如果返回3个结果集,那么VFP将打开3个游标

LocalVFPCursorName
LocalVFPCursorName1
LocalVFPCursorName2
并将基于SqlExec()调用中的查询序列。但是,如果你能提供更多关于你正在尝试做什么和他们的样品,我们也可以提供更具体的帮助