存储过程
存储过程必须是批处理中仅有的语句
语法:
Go
create Procedure 存储过程名
@参数名 参数类型(int,string...)
as
if(@参数名)
select @参数名=count(*) from 表名 where ...
else
set @参数名=1000
Go
1.只返回单一记录集的存储过程
create Procedure GetUserAccount as select * from UserAccount go -------------执行上面的存储过程---------------- exec GetUserAccount --相当于执行了select 语句,返回数据集
2、没有输入输出的存储过程
create Procedure inUserAccount as insert into UserAccount (UserName,[PassWord],RegisterTime,RegisterIP) values(9,9,'2013-01-02',9) go -------------执行上面的存储过程---------------- exec inUserAccount
--修改和插入都只是执行操作,不会返回任何数据
3、有返回值的存储过程
create Procedure inUserAccountRe as insert into UserAccount (UserName,[PassWord],RegisterTime,RegisterIP) values(10,10,'2013-01-02',10) return @@rowcount go -------------执行上面的存储过程---------------- exec inUserAccountRe --返回执行多少行
4、有输入输出参数的存储过程
create Procedure GetUserAccountRe @UserName nchar(20), @UserID int output as if(@UserName>5) select @UserID=COUNT(*) from UserAccount where UserID>25 else set @UserID=1000 go -------------执行上面的存储过程---------------- exec GetUserAccountRe '7',null
5、同时具有返回值、输入参数、输出参数的存储过程
create Procedure GetUserAccountRe1 @UserName nchar(20), @UserID int output as if(@UserName>5) select @UserID=COUNT(*) from UserAccount where UserID>25 else set @UserID=1000 return @@rowcount go exec GetUserAccountRel '7' ,null
6、同时返回参数和记录集的存储过程
create Procedure GetUserAccountRe2 @UserName nchar(20), @UserID int output as if(@UserName>5) select @UserID=COUNT(*) from UserAccount where UserID>25 else set @UserID=1000 select * from UserAccount return @@rowcount go
7、返回多个记录集的存储过程
create Procedure GetUserAccountRe3 as select * from UserAccount select * from UserAccount where UserID>5 go -------------执行上面的存储过程---------------- exec GetUserAccountRe3
后台调用存储过程的代码 (仅作为参考)
//同时具有返回值、输入参数、输出参数的存储过程GetUserAccountRe1 public void runGetUserAccountRe1() { SqlCommand cmd = common("GetUserAccountRe1"); // 创建参数 IDataParameter[] parameters = { new SqlParameter("@UserName", SqlDbType.NChar,20) , new SqlParameter("@UserID", SqlDbType.Int) , new SqlParameter("rval", SqlDbType.Int,4) }; // 设置参数类型 parameters[0].Value = "7"; parameters[1].Direction = ParameterDirection.Output; // 设置为输出参数 parameters[2].Direction = ParameterDirection.ReturnValue; //设置为返回值 // 添加参数 cmd.Parameters.Add(parameters[0]); cmd.Parameters.Add(parameters[1]); cmd.Parameters.Add(parameters[2]); con.Open(); // 执行存储过程并返回影响的行数 Label1.Text = cmd.ExecuteNonQuery().ToString(); con.Close(); // 显示影响的行数和输出参数 Label1.Text += "-输出参数为:" + parameters[1].Value.ToString(); Label1.Text += "-返回值为:" + parameters[2].Value.ToString(); }
引用地址:http://www.cnblogs.com/knowledgesea/archive/2013/01/02/2841588.html