存储过程的参数问题与C#中的调用

1. 带参数的存储过程

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_select_gua] 
@num int
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;
   select mean from tb_gua where id=@num
   
END

C#中的调用

                conn.Open();
                SqlCommand cmd = new SqlCommand();
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "sp_select_gua";
                cmd.Connection = conn;
                cmd.Parameters.Add(new SqlParameter("@num", SqlDbType.Int));
                cmd.Parameters["@num"].Value = Calculator();
                c = (string)cmd.ExecuteScalar();

2. 带rerurn的存储过程

 

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_select_gua2] 
(@num1 int,
@num2 int)
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;
   return @num1+@num2;
   
END

C#中的调用

                conn.Open();
                SqlCommand cmd = new SqlCommand();
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "sp_select_gua2";
                cmd.Connection = conn;
                cmd.Parameters.Add(new SqlParameter("@num1", SqlDbType.Int));
                cmd.Parameters["@num1"].Value = Calculator();
                cmd.Parameters.Add(new SqlParameter("@num2", SqlDbType.Int));
                cmd.Parameters["@num2"].Value = Calculator();
                cmd.Parameters.Add(new SqlParameter("@return", SqlDbType.Int));
                cmd.Parameters["@return"].Direction = ParameterDirection.ReturnValue;
                cmd.ExecuteNonQuery();
                c = cmd.Parameters["@return"].Value.ToString();

3. 带output参数的调用

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_select_gua1] 
(@num int,
@guamean nvarchar(1000)='' output,
@guaname nvarchar(10)='' output)
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;
   select @guaname=name,@guamean=mean from tb_gua where id=@num
   
END

C#中的调用

                conn.Open();
                SqlCommand cmd = new SqlCommand();
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "sp_select_gua1";
                cmd.Connection = conn;
                cmd.Parameters.Add(new SqlParameter("@num", SqlDbType.Int));
                cmd.Parameters["@num"].Value = Calculator();
                cmd.Parameters.Add(new SqlParameter("@guamean", SqlDbType.NVarChar, 1000));
                cmd.Parameters["@guamean"].Direction = ParameterDirection.Output;
                cmd.Parameters.Add(new SqlParameter("@guaname", SqlDbType.NVarChar, 10));
                cmd.Parameters["@guaname"].Direction = ParameterDirection.Output;
                cmd.ExecuteNonQuery();
                c = cmd.Parameters["@guamean"].Value.ToString();
                d = cmd.Parameters["@guaname"].Value.ToString();

 

posted on 2013-12-29 09:49  Kelvin Xu  阅读(212)  评论(0编辑  收藏  举报