没有从我老师给我使用存储过程SQL的函数中获取价值

时间:2014-01-22 19:17:41

标签: asp.net sql sql-server database stored-procedures

我的老师给了我功能以便使用存储过程:

public static int SPExecNonQuery
    (string config,
     string procName,
     params object[] prm)
    {
        SqlConnection con = new SqlConnection();
        con.ConnectionString =
            System.Configuration.
            ConfigurationManager.
            ConnectionStrings[config].ConnectionString;
        SqlCommand cmd = con.CreateCommand();
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.CommandText = procName;
        for (int i = 0; i < prm.Length - 1; i += 2)
        {
            string name = prm[i].ToString();
            object value = prm[i + 1];
            cmd.Parameters.AddWithValue(name, value);
        }
        SqlParameter prmReturn = new SqlParameter("@RETURN", SqlDbType.Int);
        prmReturn.Direction = ParameterDirection.ReturnValue;
        cmd.Parameters.Add(prmReturn);
        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
        return (int)prmReturn.Value;
}

但是当我使用它时,我总是得到值0.

这是我使用的存储过程:

ALTER PROCEDURE Ilan_InsertZoo
@zooName nvarchar(30),
@zooCountry nvarchar(30),
@zooStreet nvarchar(30),
@zooAdress nvarchar(30),
@numOfAnimals nvarchar(30),
@avgVisitorAMonth int,
@ticketPrice int,
AS
  SET NOCOUNT ON;

  INSERT INTO Ilan_TblZoos (ZooName, ZooCountry, ZooStreet, ZooAdress, NumOfAnimals, AvgVisitorAMonth, TicketPrice) 
  VALUES (@zooName, @zooCountry, @zooStreet, @zooAdress, @numOfAnimals, @avgVisitorAMonth, @ticketPrice)

有人可以告诉我为什么吗?我该怎么办?

感谢。

1 个答案:

答案 0 :(得分:1)

我认为你的老师想知道插入是否成功。因此,您需要从存储过程中返回一个值。

---Put this code at the end of your stored procedure
DECLARE @Return int
SET @Return = @@ROWCOUNT
Return @Return

@@ ROWCOUNT将返回插入的行数。如果插入成功,那么你应该得到一个1。

您可能还想对存储过程中的错误进行一些研究。