sql - 是否可以选择一个结果集从批处理执行中返回?
问题描述
我必须通过专有应用程序从 MSSQL 2014 服务器检索一些数据,然后使用 odbc 数据源。我唯一可以修改的是应用程序使用的查询。我无法修改应用程序或应用程序处理结果的方式。
如果我直接执行以下查询,例如在 Heidi 中,则以下查询正在执行我想要的操作。
USE MY_DB;
BEGIN TRANSACTION
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
DECLARE @myvar1 INT = 2;
DECLARE @myvar2 INT = 2;
PRINT @myvar1;
SELECT TOP 20 [vwPGIA].[OrNum],[vwPGIA].[DBM],[vwPGIA].[MBM],[vwPGIA].[MN],[NOMID],[Priority],SUBSTRING([Comment],0,254) AS Comment,[TLSAP],[Box],[SequenceNumber]
INTO #tmp_tbl
FROM [MY_DB].[dbo].[vwPGIA]
INNER JOIN [MY_DB].[dbo].[tblDLA] ON [dbo].[tblDLA].[OrNum]=[dbo].[vwPGIA].[OrNum]
INNER JOIN [dbo].[tblMDM] ON [vwPGIA].[MBM]=[tblMDM].[MBM]
WHERE ([TLSAP] = @myvar1)
AND [vwPGIA].[MBM] NOT IN (SELECT [MBM] FROM [MY_DB].[dbo].[vwDPS])
AND [vwPGIA].[OrNum] NOT IN (SELECT [OrNum] FROM [MY_DB].[dbo].[vwDPS] WHERE [MY_DB].[dbo].[vwDPS].[TLR] <> @myvar1)
ORDER BY [SequenceNumber];
SELECT TOP 1 [OrNum],[DBM],[MBM],[MN],[NOMID],[Priority],[Comment],[TLSAP],[Box],[WTT],[SequenceNumber]
FROM #tmp_tbl
INNER JOIN [dbo].[tblTBN] ON [Box]=[BoxN]
WHERE ([WTT]=@myvar2)
ORDER BY [SequenceNumber];
INSERT INTO [dbo].[tblDPS]
(OrNum,DBM,MBM,State,StateStartTime,Info,TLR)
SELECT TOP 1 [OrNum],[DBM],[MBM],'1',GETDATE(),'info',@myvar1
FROM #tmp_tbl
INNER JOIN [dbo].[tblTBN] ON [Box]=[BoxN]
WHERE ([WTT]=@myvar2)
ORDER BY [SequenceNumber]
;
DROP TABLE #tmp_tbl;
COMMIT TRANSACTION
通过 ODBC 接口运行它会导致空结果。问题似乎是,我正在执行一个导致多个结果集的批处理请求。应用程序可能只处理第一个结果集,或者可能无法处理多个结果集。
最后的问题是:有没有办法或解决方法将结果集减少到仅由SELECT TOP 1 ...
部件返回的结果集?
解决方案
推荐阅读
- java - 有没有一种有效的方法可以在我的游戏中连续创建更多矩形?
- regex - 正则表达式匹配稍后在同一行中找不到的字符串
- delphi - delphi 一种将十六进制字符串转换为二进制字符串的快速方法
- java - 为什么我会收到错误消息说程序找不到我的文本文件
- python - 无法打开 lib 'ODBC Driver 17 for SQL Server':找不到文件
- html - 多屏图像响应
- android - E/RecyclerView:没有附加适配器;跳过布局。没有数据显示
- sql - TSQL:创建重复表并正确修改列中的值?
- python - 使用 tkinter 库的计算器
- ruby-on-rails - 如何为 Rails 控制器中的默认 RESTful 操作设置 before_action?