我先打招呼!在过去的几个月里,这个论坛对我很有帮助,但现在才加入并提出我的第一个问题。 我正在使用SQL Server 2008 r2中的Northwind数据库来构建vb.net应用程序。我一直在破坏我的头一个星期试图找出如何订单/发票表格。我可以使用单独的存储过程(GetCustInfo,GetOrderInfo,GetProductInfo或类似的东西)获取我需要显示的信息,但是我无法弄清楚如何在表单上显示它们。 当我在一个sp中选择我需要的所有信息时(如在数据库中内置的Invoice视图中),我得到2155行,这是在公司历史记录中订购的项目数。 我想要做的是显示这些信息,但是按OrderID导航(这将给我830行,每行包含一定数量的与OrderID相关的产品)。所以我认为我需要不同的存储过程相关,这可能在某种程度上相关。 我非常感谢能给予的任何帮助。
非常感谢提前。
P.S。我有Northwind示例应用程序的截图,它随附了Access,这正是我在SQL Server中重新创建的内容。不幸的是,没有代码! MM
答案 0 :(得分:0)
是的,你可以通过多种方式实现它,SP就是一个。只需创建一个SP,即可选择将OrderId作为输入参数传递的相关产品。
答案 1 :(得分:0)
一些选项(有人为的例子):
您可以ALTER
现有存储过程来获取您想要的内容(如果您希望将现有过程用于其他查询,则不建议这样做。)
ALTER PROCEDURE usp_ExistingProcedure
AS
BEGIN
SELECT t1.Value
, t2.Value
-- Supose that this was the addition we made to an existing stored procedure
, t2.ValueTwo
FROM TableOne t1
INNER JOIN TableTwo t2 ON t1.ID = t2.ID
END
您可以CREATE
查询新的存储过程;在上面的例子中,它将是一个带有新名称的创建过程。
您可以创建VIEW
以获得所需内容 - 这将有所不同。
CREATE VIEW uv_ApplicationView
AS
SELECT t1.Value
, t2.Value
, t2.ValueTwo
FROM TableOne t1
INNER JOIN TableTwo t2 ON t1.ID = t2.ID
您可以直接从VB
应用程序提取查询,但如果您想将其重新用于其他内容,我建议您不要这样做。
// A re-usable approach calling a stored procedure
SqlCommand myQuery = new SqlCommand("EXECUTE usp_myQuery", sqlConn);
// A query directly in the C# code:
string msQuery = "SELECT t1.Value, t2.Value, t2.ValueTwo FROM TableOne t1 INNER JOIN TableTwo t2 ON t1.ID = t2.ID"
// Later ...
SqlCommand myQuery = new SqlCommand(msQuery, sqlConn);