DataGridView 无法检索具有临时 table 的存储过程

DataGridView fail to retrieve stored procedure with temp table

我构建了一个带有两个输入参数的存储过程,希望将其填充到我的 DataGridView 绑定的数据中table。

我填充数据的 Visual Basic 代码table 如下所示:

With adSearch.SelectCommand
    .Parameters("trace_txn_no").Value = // Text Value
End With

Me.adSearch.Fill(Me.DsTraceMixPack.trace_rtn_dtl)

存储过程如下所示:

ALTER PROCEDURE sp_RTN_DTL_Trace
    (@trace_txn_no varchar(12),
     @stock_code varchar(8) = '')
AS
BEGIN
    -- Select Data Here
END

当我输入单行进行选择时,例如

SELECT
    '00546599' AS mixtxnno, 
    '000000513761' AS txn_no, 
    '81050119' AS stock_code, 
    5 AS qty, 
    '20022' AS to_loc, 
    '2021-09-06' AS txn_date, 
    3 AS onhand_qty, 
    'Department A' AS txn_loc

datagridview 工作正常。

但是当我使用临时table,例如

CREATE TABLE #report  
(
    mixtxnno varchar(12),
    txn_no varchar(20),
    stock_code varchar(8),
    qty int,
    to_loc varchar(5),
    txn_date datetime,
    onhand_qty int,
    txn_loc varchar(12)
);

INSERT INTO #report(mixtxnno,txn_no, stock_code,qty, to_loc, txn_date, onhand_qty, txn_loc)
VALUES ('00546599', '000000513761', '81050119', 5, '20022', '2021-09-06', 3, 'Department A')

SELECT 
    mixtxnno AS mixtxnno,
    txn_no AS txn_no,
    stock_code AS stock_code,
    qty AS qty,
    to_loc AS to_loc,
    txn_date AS txn_date,
    onhand_qty AS onhand_qty,
    txn_loc AS txn_loc
FROM
    #report

datagridview 停止工作,当我跟踪 DataTable 'trace_rtn_dtl' 的结果属性时,它会抛出此消息

System.Linq.SystemCore_EnumerableDebugViewEmptyException

截图:

为什么会发生这种情况,我该如何解决?我希望对多个数据进行一些操作,并将它们 return 到 DataGridView,我选择在我的存储过程中使用临时 table。谢谢

我找到了解决方案

如果使用存储过程的任何人在使用临时表时不返回记录集,这可能会有所帮助。

将其添加到存储过程的最前面。

SET NOCOUNT ON

似乎发生的是在操作临时表、分配变量等时生成空 RecordSets。

使用“SET NOCOUNT ON”可以防止生成这些空集,你只需要在程序结束时将其关闭即可。