[英]SQL Stored Procedure Problem in ASP.NET
我已經存儲過程像
CREATE procedure [dbo].[spAddItem]
(
@itemId nvarchar(50),
@itemName nvarchar(500),
@itemDescription nvarchar(500),
@itemImage nvarchar(100),
@cityId bigint,
@Active int,
@Status bigint output
)
as
begin tran
declare @count as int
declare @result as int
Set NOCOUNT ON
select @count = Count(*) from Item where itemName = @itemName and itemId = @itemId
if(@count > 0)
begin
set @result = -1;
end
else
begin
insert into Item(itemId,itemName,itemDescription,itemImage,cityId,Active)
values (@itemId,@itemName,@itemDescription,@itemImage,@cityId,@Active)
set @result = 0
end
if @@error=0
begin
commit tran
select @Status=@result
return @Status
end
else
begin
rollback tran
select @Status=@result
return @Status
end
commit tran
&在我使用的函數中獲取狀態參數
public void DALInsertItem(ItemBLL it)
{
int rowNo;
using (SqlConnection con = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]))
{
try
{
SqlParameter[] par = new SqlParameter[7];
par[0] = new SqlParameter("@itemId",it.itemId);
par[1] = new SqlParameter("@itemName",it.itemName);
par[2] = new SqlParameter("@itemDescription", it.itemDescription);
par[3] = new SqlParameter("@itemImage", it.itemImage);
par[4] = new SqlParameter("@cityId",it.cityId);
par[5] = new SqlParameter("@Active", it.itemActive);
par[6] = new SqlParameter("@Status", 100);
par[6].Direction = ParameterDirection.Output;
rowNo = SqlHelper.ExecuteNonQuery(con, CommandType.StoredProcedure, "spAddItem", par);
}
catch (Exception ex)
{
throw ex;
}
finally
{
con.Close();
}
if (rowNo == -1)
{
it.isExistItem = false;
}
else
{
it.isExistItem = true;
}
}
}
問題是我沒有在函數中獲取狀態(輸出參數),
如何訪問在存儲過程中設置的函數中的狀態參數。
謝謝
調用存儲過程后,需要訪問該輸出參數:
using (SqlConnection con = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]))
{
try
{
SqlParameter[] par = new SqlParameter[7];
par[0] = new SqlParameter("@itemId",it.itemId);
par[1] = new SqlParameter("@itemName",it.itemName);
par[2] = new SqlParameter("@itemDescription", it.itemDescription);
par[3] = new SqlParameter("@itemImage", it.itemImage);
par[4] = new SqlParameter("@cityId",it.cityId);
par[5] = new SqlParameter("@Active", it.itemActive);
par[6] = new SqlParameter("@Status", 100);
par[6].Direction = ParameterDirection.Output;
rowNo = SqlHelper.ExecuteNonQuery(con, CommandType.StoredProcedure, "spAddItem", par);
int returnStatus = (int)par[6].Value;
}
您正在從存儲過程中返回@@status
,因此可以使用ExecuteScalar
而不是ExecuteNonQuery
返回狀態
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.