存储过程中OUTPUT类型参数的使用总结
2007-05-16 16:53
267 查看
作为演示,首先我们建立一个存储过程,当然这个存储过程会包含一个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,比较恼火,呵呵。
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,比较恼火,呵呵。
相关文章推荐
- oracle中,使用存储过程带数组参数的形式向表中添加数据(存储过程,数组参数,序列,触发器,类型,循环)
- ASP中使用存储过程,遭遇"参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突"错误
- sql 中使用了output类型,那么在程序中如何传这个参数呢
- The DataDirect provider for Oracle调用存储过程使用Cursor类型参数
- mysql笔记四——TEXT、LOB类型的使用和存储过程的使用
- JAVAWEB开发之Struts2详解(二)——Action接受请求参数、类型转换器、使用Struts2的输入校验、以及遵守约定规则实现Struts2的零配置
- MySQL日期数据类型、时间类型使用总结
- response.setContentType()中MIME参数类型总结
- java调用oracle中输入参数是数组类型的函数或者存储过程
- SQL SERVER使用ODBC 驱动建立的链接服务器调用存储过程时参数不能为NULL值
- C++拷贝构造函数的参数为什么必须使用引用类型
- 反射中使用值类型与引用类型的参数的区别
- 使用json_encode参数为GBK类型的中文
- 参数传递数组 接收 前端使用jquery向后台传递数组类型的参数,java后台直接通过list类型接收,会发现无法取到参数的情况。
- MySQL存储过程使用表名做参数
- 在Asp中使用存储过程 数值类型值
- 解决在LinqDataSouce中使用GUID参数类型的问题
- SQL Server存储过程Return、output参数及使用技巧
- [代码]如何使用带参数的存储过程(LINQ to SQL)
- 使用Python中的argparse从命令行接收boolean类型的参数