asdfasfasdf

存储过程中OUTPUT类型参数的使用总结

作为演示,首先我们建立一个存储过程,当然这个存储过程会包含一个OUTPUT类型的参数:
CREATE PROCEDURE MyTest
    
@MyVar varchar(25) OUTPUT
AS
BEGIN
    
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,比较恼火,呵呵。

posted on 2007-05-16 16:53  明达  阅读(1390)  评论(1编辑  收藏  举报

导航