SQLServer 中存储过程返回的三种方式( 包括存储过程的创建, 在存储过程中调用, 在VS中调用的方法)
2012-05-03 18:02
951 查看
存储过程有三种返回:
1. 用return返回数字型数据
2. 用返回参数返回结果,可以返回各种数据类型(通过游标来循环查询结果每一行)
3. 直接在存储过程中用select返回结果集,可以是任意的select语句,这意味着是任意的返回结果集
方法一:用return返回数字型数据
1. 创建存储过程
--SQLSERVER 2005示例数据库
USE AdventureWorks
GO
CREATE PROCEDURE checkstate
@param VARCHAR(11)
AS
IF (
SELECT StateProvince
FROM Person.vAdditionalContactInfo
WHERE ContactID = @param
) = 'WA'
RETURN 1
ELSE
RETURN 2;
GO
2. 在存储过程中调用
DECLARE @return_status INT;
EXEC @return_status = checkstate '9'; --将存储过程返回值赋给@return_status
SELECT 'Return Status' = @return_status;
GO
3. 在VS中调用
List<DbParameter> para = new List<DbParameter>();
para.Add(new SqlParameter("@param", 9));
SqlParameter pa = new SqlParameter();
pa.ParameterName = "@return";
pa.SqlDbType = SqlDbType.Int;
pa.Direction = ParameterDirection.ReturnValue;
para.Add(pa);
int i = DBHelper.ExecuteSql("checkstate", CommandType.StoredProcedure, para);
Response.Write(para[1].Value.ToString());
方法二:用返回参数返回结果,可以返回各种数据类型(通过游标来循环查询结果每一行)
1. 创建存储过程
--SQLSERVER 2005示例数据库
USE AdventureWorks
GO
CREATE PROCEDURE OutPutValue
@param VARCHAR(11),
@param2 VARCHAR(11) OUTPUT
AS
IF (
SELECT StateProvince
FROM Person.vAdditionalContactInfo
WHERE ContactID = @param
) = 'WA'
SET @param2='Good'
ELSE
SET @param2='Bad'
GO
2. 在存储过程中调用
DECLARE @param1 NVARCHAR(100)
DECLARE @param2 NVARCHAR(100)
SET @param1='9'
EXEC OutPutValue '9',@param2 OUTPUT
SELECT @param2
3. 在VS中调用
List<DbParameter> para = new List<DbParameter>();
para.Add(new SqlParameter("@param", "9"));
SqlParameter pa = new SqlParameter();
pa.Direction = ParameterDirection.Output;
pa.ParameterName = "@param2";
pa.Size = 11;
para.Add(pa);
int i = DBHelper.ExecuteSql("OutPutValue ", CommandType.StoredProcedure, para);
//OutPut返回值
Response.Write(para[1].Value.ToString()); //输出返回值
方法三:直接在存储过程中用select返回结果集,可以是任意的select语句,这意味着是任意的返回结果集
1. 创建存储过程
--SQLSERVER 2005示例数据库
USE AdventureWorks
GO
CREATE PROCEDURE ReturnDataTable
AS
BEGIN
SELECT * FROM Person.vAdditionalContactInfo
END
GO
2. 在存储过程中调用
EXEC ReturnDataTable
3. 在VS中调用
//存储过程返回结果集可存放在DataTable
DataTable dt = DBHelper.GetDataTable("ReturnDataTable", CommandType.StoredProcedure);
1. 用return返回数字型数据
2. 用返回参数返回结果,可以返回各种数据类型(通过游标来循环查询结果每一行)
3. 直接在存储过程中用select返回结果集,可以是任意的select语句,这意味着是任意的返回结果集
方法一:用return返回数字型数据
1. 创建存储过程
--SQLSERVER 2005示例数据库
USE AdventureWorks
GO
CREATE PROCEDURE checkstate
@param VARCHAR(11)
AS
IF (
SELECT StateProvince
FROM Person.vAdditionalContactInfo
WHERE ContactID = @param
) = 'WA'
RETURN 1
ELSE
RETURN 2;
GO
2. 在存储过程中调用
DECLARE @return_status INT;
EXEC @return_status = checkstate '9'; --将存储过程返回值赋给@return_status
SELECT 'Return Status' = @return_status;
GO
3. 在VS中调用
List<DbParameter> para = new List<DbParameter>();
para.Add(new SqlParameter("@param", 9));
SqlParameter pa = new SqlParameter();
pa.ParameterName = "@return";
pa.SqlDbType = SqlDbType.Int;
pa.Direction = ParameterDirection.ReturnValue;
para.Add(pa);
int i = DBHelper.ExecuteSql("checkstate", CommandType.StoredProcedure, para);
Response.Write(para[1].Value.ToString());
方法二:用返回参数返回结果,可以返回各种数据类型(通过游标来循环查询结果每一行)
1. 创建存储过程
--SQLSERVER 2005示例数据库
USE AdventureWorks
GO
CREATE PROCEDURE OutPutValue
@param VARCHAR(11),
@param2 VARCHAR(11) OUTPUT
AS
IF (
SELECT StateProvince
FROM Person.vAdditionalContactInfo
WHERE ContactID = @param
) = 'WA'
SET @param2='Good'
ELSE
SET @param2='Bad'
GO
2. 在存储过程中调用
DECLARE @param1 NVARCHAR(100)
DECLARE @param2 NVARCHAR(100)
SET @param1='9'
EXEC OutPutValue '9',@param2 OUTPUT
SELECT @param2
3. 在VS中调用
List<DbParameter> para = new List<DbParameter>();
para.Add(new SqlParameter("@param", "9"));
SqlParameter pa = new SqlParameter();
pa.Direction = ParameterDirection.Output;
pa.ParameterName = "@param2";
pa.Size = 11;
para.Add(pa);
int i = DBHelper.ExecuteSql("OutPutValue ", CommandType.StoredProcedure, para);
//OutPut返回值
Response.Write(para[1].Value.ToString()); //输出返回值
方法三:直接在存储过程中用select返回结果集,可以是任意的select语句,这意味着是任意的返回结果集
1. 创建存储过程
--SQLSERVER 2005示例数据库
USE AdventureWorks
GO
CREATE PROCEDURE ReturnDataTable
AS
BEGIN
SELECT * FROM Person.vAdditionalContactInfo
END
GO
2. 在存储过程中调用
EXEC ReturnDataTable
3. 在VS中调用
//存储过程返回结果集可存放在DataTable
DataTable dt = DBHelper.GetDataTable("ReturnDataTable", CommandType.StoredProcedure);
相关文章推荐
- SQLServer 中存储过程返回的三种方式( 包括存储过程的创建, 在存储过程中调用, 在VS中调用的方法)
- SQLServer 中存储过程返回的三种方式( 包括存储过程的创建, 在存储过程中调用, 在VS中调用的方法)
- C#中的类SqlCommand对象使用方法ExecuteNonQuery()调用SQLServer存储过程时,存储过程执行成功,数据发生改变,但是返回-1
- 基于C#中的类SqlCommand对象调用SQLServer存储过程时,存储过程执行成功,但是对象方法ExecuteNonQuery()返回-1
- MySQL存储过程和自定义函数、Navicat、创建存储过程和函数、调用存储过程和函数、三种方式、In和Out类型参数、
- MySQL存储过程和自定义函数、Navicat、创建存储过程和函数、调用存储过程和函数、三种方式、In和Out类型参数、
- SQL Server2012 创建数据库存储过程和VS2015 C#调用自己的存储过程
- sqlserver,获取调用存储过程返回数据的方法。
- oracle中存储过程调用存储过程(带有返回结果集)
- iBatis调用存储过程以及MySQL创建存储过程
- 存储过程从入门到熟练(多个存储过程完整实例及调用方法)_AX -转载
- JAVA调用sqlserver存储过程的实现(返回多个结果集的实现)
- sqlserver在调用存储过程中遇到convert转换失败问题的解决方法
- 分享:在存储过程中使用另一个存储过程返回的查询结果集的方法
- 分享:在存储过程中使用另一个存储过程返回的查询结果集的方法
- 存储过程从入门到熟练(多个存储过程完整实例及调用方法)(转)
- VB.NET调用MySQL存储过程并获得返回值的方法
- 获取SqlServer存储过程定义的三种方法
- 存储过程的创建及在项目中的调用方法总结
- 存储过程从入门到熟练(多个存储过程完整实例及调用方法)