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
”可以防止生成这些空集,你只需要在程序结束时将其关闭即可。
我构建了一个带有两个输入参数的存储过程,希望将其填充到我的 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
”可以防止生成这些空集,你只需要在程序结束时将其关闭即可。