我想知道这两个符号之间的区别。将参数添加到SQL Server 2005中的存储过程之间的区别
首先我有一个存储过程
CREATE PROCEDURE AddSomething(@zonename varchar(50), @desc varchar(255), @TheNewId int OUTPUT) AS
BEGIN
INSERT INTO a_zone(zonename, descr) VALUES(@zonename, @desc)
SELECT @TheNewId = SCOPE_IDENTITY()
END
的区别是什么,如果我以这种方式添加参数
SqlCommand Cmd = new SqlCommand("AddSomething", oConn);
Cmd.CommandType = CommandType.StoredProcedure;
SqlParameter oParam1 = Cmd.Parameters.AddWithValue("@zonename", sName);
SqlParameter oParam2 = Cmd.Parameters.AddWithValue("@desc", description);
和
SqlCommand Cmd2 = new SqlCommand("AddSomething", oConn);
Cmd2.CommandType = CommandType.StoredProcedure;
cmd2.Parameters.Add("@zonename", SqlDbType.VarChar).Value = zonename.Text.Trim();
cmd2.Parameters.Add("@desc", SqlDbType.VarChar).Value = desc.Text.Trim();
请帮我
感谢预期
@Tim所以你的意思是这两种方法都用于将参数传递到存储过程中。 – 2011-03-26 22:28:21
@ user653622:是的,但不仅适用于存储过程,而且适用于各种sql-command。他们都有优点和缺点(见链接)。 – 2011-03-26 22:30:00
@Tim我怎样才能使用第二种方法来传递输出类型参数,特别是当我没有任何值传递时,而是我期待存储过程中的值。具体在这种情况下cmd2.Parameters.Add(“@ TheNewId”,SqlDbType.Int).Value = ???;如果我使用第二种方法,它会期待一个值,但我必须明确地告诉它不要期望输出参数的值,我该如何告诉它?请帮助我 – 2011-03-26 22:41:38