批处理中的 SQL 查询不执行



我的项目是Visual Foxpro,我使用MS SQL server 2008。当我批量触发 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 工作,因为"#"表示 SQL 上的临时表,无论当前连接句柄是什么。

如果要从单个SQL调用返回MULTIPLE RESULT SET,也可以这样做,只需添加另一个没有"into #tmpSQLblah"上下文的查询即可。 然后,这些结果游标的所有实例都将基于"LocalVFPCursorName"前缀返回到 VFP。 如果要返回 3 个结果集,则 VFP 将打开 3 个游标,称为

LocalVFPCursorName
LocalVFPCursorName1
LocalVFPCursorName2

并将基于 SqlExec(( 调用中的查询顺序。 但是,如果您能提供更多关于您要做的事情及其样本的信息,我们也可以提供更具体的帮助。

相关内容

  • 没有找到相关文章

最新更新