Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 执行存储过程_C#_Asp.net_Sql Server_Stored Procedures - Fatal编程技术网

C# 执行存储过程

C# 执行存储过程,c#,asp.net,sql-server,stored-procedures,C#,Asp.net,Sql Server,Stored Procedures,如何在ASP.net或c#中执行此存储过程?如何传递参数@batch date以便根据batch#u 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

如何在ASP.net或c#中执行此存储过程?如何传递参数@batch date以便根据batch#u 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

使用Linq到Sql。看这篇文章

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

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());
}

您还应该将
SqlCommand
放入
using()..
block…@marc\s:谢谢您的提示。现在修改了代码。另一个提示:尽可能晚地打开连接-在
SqlCommand
上执行安装工作时,不需要打开连接。。。。在调用
.ExecuteNonQuery()
之前打开它(并在调用之后显式关闭它!)
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());
}