存储过程
存储过程必须是批处理中仅有的语句
语法:
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
分类:
sql server基础知识
标签:
sql 存储过程
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现