存储过程中OUTPUT类型参数的使⽤总结
作为演⽰,⾸先我们建⽴⼀个存储过程,当然这个存储过程会包含⼀个OUTPUT类型的参数:
CREATE PROCEDURE MyTest
@MyVar varchar(25) OUTPUT
AS
BEGINoutput的反义词
SELECT@MyVar='abc'
END
GO
这段代码很简单,重点在于OUTPUT类型的参数后⾯⼀定要有OUTPUT。
既然是输出的,当然要有个输出的地⽅,也就是为了运⾏这个存储过程,⾸先要先声明⼀个变量,调⽤的⽅法如下:
DECLARE@TestVar VARCHAR(25)
EXEC MyTest @TestVar OUTPUT
SELECT@TestVar
结果⾃然是abc,这⾥的关键就是传参的时候,⼀定要加OUTPUT,我⽼忘这个事情,呵呵。
上边是在SSMS中进⾏调⽤的,可是如果我们要是在ADO.NET中进⾏调⽤该怎么做呢,其实很简单的,当然额外要做的事情就是要加OUTPUT咯,具体参考以下代码:
public static string GetTestResult()
{
string ret = string.Empty;
using (SqlConnection sqlConnection = new SqlConnection(GetConnectionString()))
{
SqlCommand nonQueryCommand = new SqlCommand();
nonQueryCommand.Connection = sqlConnection;
nonQueryCommand.CommandText = "MyTest";
nonQueryCommand.CommandType = CommandType.StoredProcedure;
SqlParameter returnParameter = nonQueryCommand.Parameters.Add("@MyVar", SqlDbType.VarChar, 25);
returnParameter.Direction = ParameterDirection.Output;
nonQueryCommand.Connection.Open();
nonQueryCommand.ExecuteNonQuery();
ret = returnParameter.Value.ToString();
}
return ret;
}
关键的地⽅是要设置参数的Direction属性。
剩下的就是废话了,其实开始的时候是打算⽤SQL Server⾃带的⾃定义函数的,可是限制太多,⽐如在⾃定义函数中不可以使⽤Insert或者Update,⽐较恼⽕,呵呵。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。