-3

如何在 ASP.net 或 c# 中执行此存储过程?如何传递参数@batch date 以便可以根据 batch_date 操作输出?

 ALTER PROCEDURE [dbo].[inv_check] @batch_date datetime AS BEGIN
 CREATE TABLE #temp1
(batch_date datetime,part_no varchar(25),Tot_Tid_Count_Qty int,Number_of_tid int,Updated_DT int)

INSERT INTO #temp1
SELECT batch_date,part_no,0,count(tid),0
FROM dbo.tnx_tid_InvCheck_Details
where batch_date = @batch_date
Group by part_no,batch_date
order by part_no

UPDATE #temp1
SET Updated_DT = isnull(d.Updated_DT,0)
--select i.part_no,i.Number_of_tid, isnull(d.Updated_DT,0)
FROM #temp1 p
LEFT OUTER JOIN 
    (SELECT part_no,COUNT(LastUpdate_DT)as Updated_DT
    FROM dbo.tnx_tid_InvCheck_Details
    Where NOT LastUpdate_DT IS NULL and  batch_date = @batch_date
    Group by  part_no,batch_date) d on p.part_no=d.part_no  


DECLARE @sql int
DECLARE @sql1 int

SELECT @sql1 = count(part_no) 
FROM #temp1

SELECT @sql = count(part_no)
FROM #temp1
WHERE number_of_tid= Updated_DT


DELETE #temp1



CREATE TABLE #temp2
(batch_date datetime,part_no varchar(25),kb02_qty int,sum_count_qty int,variance int)

INSERT INTO #temp2
SELECT batch_date,part_no,kb02_qty,0,0
FROM dbo.tnx_tid_InvCheck_Master
where NOT kb02_qty IS NULL  AND batch_date = @batch_date
ORDER BY part_no



UPDATE #temp2
SET sum_count_qty = isnull (q.sum_count_qty,0)  
--select i.part_no,i.Number_of_tid, isnull(d.Updated_DT,0)
FROM #temp2 t
LEFT OUTER JOIN 
    (SELECT part_no,sum(count_qty) as sum_count_qty
    FROM dbo.tnx_tid_InvCheck_Details
    Where NOT LastUpdate_DT IS NULL AND batch_date = @batch_date
    Group by part_no) q on t.part_no= q.part_no

UPDATE #temp2   
SET variance=(kb02_qty - sum_count_qty) 

DECLARE @parts_having_variance int          
DECLARE @negative_variance_qty int
DECLARE @Negative_Variance_Parts int
DECLARE @Positive_Variance_Qty int
DECLARE @Positive_Variance_Parts int

SELECT @parts_having_variance = COUNT(part_no) 
FROM #temp2
WHERE NOT variance = 0

SELECT @negative_variance_qty = sum(variance) 
FROM #temp2
Where variance < 0  

SELECT @Negative_Variance_Parts = COUNT(variance) 
FROM #temp2
Where variance < 0  

SELECT @Positive_Variance_Qty = sum(variance) 
FROM #temp2
Where variance > 0  

SELECT @Positive_Variance_Parts = COUNT(variance) 
FROM #temp2
Where variance > 0  

INSERT INTO #temp1
SELECT batch_date,part_no,0,COUNT(tid)as Number_of_tid,0
FROM dbo.tnx_tid_InvCheck_Details
WHERE batch_date = @batch_date
Group by part_no,batch_date
order by part_no

UPDATE #temp1 
SET Updated_DT = isnull(d.Updated_DT,0)
FROM #temp1 p
LEFT OUTER JOIN 
    (SELECT part_no,COUNT(LastUpdate_DT)as Updated_DT
    FROM dbo.tnx_tid_InvCheck_Details
    Where NOT LastUpdate_DT IS NULL AND batch_date = @batch_date
    Group by part_no,batch_date) d on p.part_no=d.part_no

    DECLARE @tid_count int

    SELECT @tid_count=SUM(Number_of_tid) 
    FROM #temp1
    WHERE Number_of_tid = Updated_DT

UPDATE #temp1
SET Tot_Tid_Count_Qty = (e.Tot_Tid_Count_Qty)
FROM #temp1 p
LEFT OUTER JOIN
(SELECT part_no,SUM(count_qty)AS Tot_Tid_Count_Qty
    FROM dbo.tnx_tid_InvCheck_Details
    WHERE batch_date = @batch_date
    Group by part_no,batch_date) e on p.part_no=e.part_no

    DECLARE @tid_count_qty int

    SELECT @tid_count_qty = SUM(Tot_Tid_Count_Qty) 
    FROM #temp1
    WHERE Number_of_tid = Updated_DT



SELECT ' Parts Counted ' AS CRITERIA , LTRIM(RTRIM(CONVERT(CHAR,@sql))) + ' / ' + LTRIM(RTRIM(CONVERT(CHAR,@sql1))) AS QTY
UNION
SELECT ' Parts Having Variance ' AS CRITERIA ,LTRIM(RTRIM(CONVERT(CHAR,@parts_having_variance ))) AS QTY
UNION
SELECT ' Total tid Count ' AS CRITERIA ,LTRIM(RTRIM(CONVERT(CHAR,@tid_count ))) AS QTY
UNION
SELECT ' Total tid Count Qty ',LTRIM(RTRIM(CONVERT(CHAR,@tid_count_qty ))) AS QTY
UNION
SELECT ' Total Negative Variance Qty ' AS CRITERIA ,LTRIM(RTRIM(CONVERT(CHAR,@negative_variance_qty ))) AS QTY
UNION
SELECT ' Negative Variance Parts ' AS CRITERIA ,LTRIM(RTRIM(CONVERT(CHAR,@Negative_Variance_Parts ))) AS QTY
UNION
SELECT ' Total Positive Variance Qty ' AS CRITERIA ,LTRIM(RTRIM(CONVERT(CHAR,@Positive_Variance_Qty ))) AS QTY
UNION
SELECT ' Positive Variance Parts ' AS CRITERIA ,LTRIM(RTRIM(CONVERT(CHAR,@Positive_Variance_Parts)))    AS QTY


Drop table #temp1
Drop table #temp2

END

我试过这个 ASP.net 代码......它不工作......你们能帮我修复这个代码..tq......

      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Web;
      using System.Web.UI;
       using System.Web.UI.WebControls;
        using System.Data;
        using System.Data.SqlClient;

        namespace new1
      {
            public partial class _Default : System.Web.UI.Page
       {
    protected void Page_Load(object sender, EventArgs e)
    {
        string str = "Data Source = kmsiis010;Initial Catalog =db_IntelliMat;Integrated Security=True";
        SqlConnection conn = new SqlConnection(str);
        SqlCommand cmd = new SqlCommand("inv_check", conn);
        SqlDataAdapter da = new SqlDataAdapter();
        da.SelectCommand = cmd;
        DataSet ds = new DataSet();
        da.Fill(ds, "dbo.tnx_tid_InvCheck_Details");
        this.GridView1.DataSource = ds;
        this.GridView1.DataBlind();
         }
         }
        }
4

2 回答 2

4

这是执行存储过程的基本代码。

try
{
  using (SqlConnection connection = new SqlConnection(connectionString))
  {

    using(SqlCommand command = new SqlCommand("inv_check", connection))
    {
      command.CommandType = CommandType.StoredProcedure;
      command.Parameters.Add("@batch_date", SqlDbType.DateTime).Value = DateTime.Now; // or the variable which holds datetime
      connection.Open();
      return command.ExecuteNonQuery();
    }
  }
}
catch (SqlException ex)
{
   Response.Write("SQL Error" + ex.Message.ToString());
}
于 2012-11-20T06:10:23.443 回答
0

使用 Linq 到 Sql。看这篇文章http://weblogs.asp.net/scottgu/archive/2007/08/16/linq-to-sql-part-6-retrieving-data-using-stored-procedures.aspx

于 2012-11-20T06:04:43.070 回答