Sql server SQL Server存储过程不向类返回数据,但在SQL Server Management Studio中工作正常
我正在尝试从vb类和类上的SQL Server存储过程检索数据:Sql server SQL Server存储过程不向类返回数据,但在SQL Server Management Studio中工作正常,sql-server,vb.net,visual-studio-2012,Sql Server,Vb.net,Visual Studio 2012,我正在尝试从vb类和类上的SQL Server存储过程检索数据: Dim GetDailySalesAmateurRptOrderItems_DataArray(,) As String = oDAL.GetDailySalesAmateurRptOrderItems("2014-04-17", "2014-04-20") 即使数据库中有足够的数据,它也不会向数组返回任何内容。。。知道是什么导致了这个问题吗 USE [QUICKFIX_COLOR_LAB_POS] GO SET ANSI_N
Dim GetDailySalesAmateurRptOrderItems_DataArray(,) As String =
oDAL.GetDailySalesAmateurRptOrderItems("2014-04-17", "2014-04-20")
即使数据库中有足够的数据,它也不会向数组返回任何内容。。。知道是什么导致了这个问题吗
USE [QUICKFIX_COLOR_LAB_POS]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[GetDailySalesAmateurRptOrderItems]
@FromDate Datetime, @ToDate Datetime
as
SELECT
ITEMS.ItemID, ITEMS.ItemName, ORDER_ITEMSET.Qty,
ORDER_ITEMSET.SoldPrice, ORDERS.OrderTimestamp
FROM
ORDERS
INNER JOIN
ORDER_ITEMSET ON ORDERS.OrderID = ORDER_ITEMSET.OrderID
INNER JOIN
CUSTOMER_ACCOUNTS ON ORDERS.CustomerID = CUSTOMER_ACCOUNTS.CUSTOMER_ID
CROSS JOIN
ITEMS
WHERE
(CUSTOMER_ACCOUNTS.CUSTOMER_CATEGORY = 'Amateur')
AND (ORDERS.OrderTimestamp BETWEEN CONVERT(DATETIME, @FromDate, 102) AND CONVERT(DATETIME, @ToDate, 102))
ORDER BY
ITEMS.ItemID
VB函数
Function GetDailySalesAmateurRptOrderItems(DateFrom As String, ByVal DateTo As String)
Try
Dim DateFrom_Date As DateTime = DateFrom
Dim DateTo_Date As DateTime = DateTo
Dim output(,) As String
Dim counter As Integer
Dim cmd As New SqlCommand("GetDailySalesAmateurRptOrderItems", DBconn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddWithValue("@FromDate", DateFrom_Date)
cmd.Parameters.AddWithValue("@ToDate", DateTo_Date)
Dim reader As SqlDataReader
DBconn.Open()
reader = cmd.ExecuteReader
While reader.Read()
counter = counter + 1
End While
ReDim output(counter - 1, 0 To 4)
counter = 0
reader.Close()
reader = cmd.ExecuteReader
While reader.Read()
output(counter, 0) = reader(0)
output(counter, 1) = reader(1)
output(counter, 2) = reader(2)
output(counter, 3) = reader(3)
output(counter, 4) = reader(4)
counter = counter + 1
End While
DBconn.Close()
Return output
Catch ex As Exception
Return ex.Message
End Try
End Function
您是否检查了DateFrom_Date和DateTo_Date的值?另外,我建议您使用SQL Server探查器,这样您就可以准确地看到onexec GetDailysalesameturerPtorderItems@FromDate='2014-04-17 00:00:00'的运行情况,@ToDate='2014-04-20 00:00:00'您是否直接运行查询以准确了解程序应返回的预期结果?我运行了它,下面是您执行查询两次的结果,这不太好。我假设第一次执行查询的目的是获取行数,以便创建数组。相反,创建一个类来表示结果集中的一行,然后使用该类的列表来保存结果。您可以从中返回一个数组。这样可以避免执行查询两次。