SQL Server 存储过程_mysql存储过程教程

SQL Server 存储过程_mysql存储过程教程储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

SQL SERVER 存储过程

**相对于视图的优势(为什么使用存储过程):**     Sql Server中视图通过简单的Select查询来解决多次复杂的查询,但是视图不能提供业务逻辑的功能,而存储过程可以。 **什么是存储过程:**

  • 存储过程(Procedure)是一组为了完成特定功能的Sql语句集合,相当于C#中的方法,只编译一次,经编译后存储在数据库中,用户可以通过制定的存储过程名称并给出所需参数来执行
  • 存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接收参数,输出参数,返回单个,多个结果集和返回值。
  • 正是由于存储过程只编译一次,所以它比单个Sql语句块要快速, 所以在一定程度上减少了网络流量,减轻网络负担。

存储过程的优点:

模块化编程 写一次存储过程,可以多次从应用程序的不同部分调用,重复使用
性能 存储过程提供更快的代码执行,减少了网络流量负担。
安全 用户无需使用写任何Sql语句去执行存储过程,防止了Sql注入攻击
可维护性 一组需求改变,修改存储过程即可再次重复调用

存储过程缺点:

不可移植性 每种数据库的内部编程语法都不太相同,当你的系统需要兼容多种数据库时最好不要用存储过程。
学习成本高,DBA一般都擅长写存储过程,但并不是每个程序员都能写好存储过程,除非你的团队有较多的开发人员熟悉写存储过程,否则后期系统维护会产生问题。 存储过程有复杂运算,或者复杂运算过多的话,会增加数据库运行的负担。

SQL SERVER写一个存储过程:

CREATE PROC MyPage
(
@name nvarchar(10),
@page decimal output
)
AS
BEGIN
select * from students
END

执行存储过程:

declare @p decimal--创建Sql变量
declare @n nvarchar(5)
set @n='张三'--为Sql变量赋值
EXEC MyPage @n,@p out--调用存储过程
select @p

修改(删除)存储过程

alter proc proc_name
as
begin
  --sql语句
end  
--删除存储过程
drop proc proc_name

(相关实例)分页存储过程

--存储过程分页
alter PROC NesList
(
@a int,--第几页
@b int,--每页行数
@sum int output,--总行数
@str int output,--总页数
@result nvarchar(100) output--结果
)
AS
BEGIN 

--总行数
Select @sum=count(*) from NewsListTable
--总页数
set @str=CEILING(@sum*1.0/@b)
if(@a<0 or @a>@str)
begin
set @result='页码错误!'
end
--分页数据
select t.NewsId as '新闻编号',t.NewsTitle as '新闻类别',t.NewsDate  as '新闻发布时间' from 
( SELECT  *,RN=ROW_NUMBER() OVER(order by NewsId) FROM NewsListTable) as t where t.RN between ((@a-1)*@b)+1 and @a*@b --between and 包括两边值

END


-------测试存储过程
--测试
declare @nub int
set @nub=-1
declare @nm int
set @nm=2
declare @countsum int
declare @countye int
declare @re nvarchar(100)
exec NesList @nub,@nm,@countsum out,@countye out,@re out
select @countsum,@countye,@re
  • VS调用存储过程实现分页:
 private int a = 1;//第几页
 private int b = 7;//每页数据行数
 private int sum;//总数据行数
 private int str;//总页数
 //利用SqlDataAdapter进行数据读取绑定
            string connstr = "*****************";
            DataTable u = new DataTable();
            using (SqlDataAdapter con = new SqlDataAdapter("USP_Students", connstr))
            { 
   
                con.SelectCommand.CommandType = CommandType.StoredProcedure;
                SqlParameter[] pms = { 
   
                        new SqlParameter ("@A",SqlDbType.Int) { 
   Value=a },
                        new SqlParameter ("@B",SqlDbType.Int) { 
    Value=b},
                        new SqlParameter ("@SUM",SqlDbType.Int) { 
    Direction=ParameterDirection.Output},
                        new SqlParameter ("STR",SqlDbType.Int) { 
    Direction=ParameterDirection.Output}
                    };
                con.SelectCommand.Parameters.AddRange(pms);
                con.Fill(u);
                lblsum.Text = pms[2].Value.ToString();//获取输出参数
                lblye.Text = pms[3].Value.ToString();
                label1.Text = a.ToString();

                this.DGVI.DataSource = u;
            }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/185587.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 拉屎抽烟定理_为什么抽烟才能拉出屎

    拉屎抽烟定理_为什么抽烟才能拉出屎最近一直在做游戏,刚开始接触游戏,思维还是撞不过来,买了一本书看了看了一下,才开始有了游戏思维,每当写程序感到思维混乱的时候,于是出去抽根烟,什么烦恼随着眼圈飘忽而出,有时抽着抽着突然就有了灵感,于是

  • 请介绍你在互联网上搜索工具软件的方法或经验_大型互联网公司有哪些

    请介绍你在互联网上搜索工具软件的方法或经验_大型互联网公司有哪些播妞的一位朋友,用了将近10年电脑。但他的信息检索能力令人诧异。每次需要找点图片、网站甚至小电影,都需要用很久时间,在各大网站论坛里里疲于奔波。因为他只会用百度和360啊!然而,百度或者google虽然可以提供海量信息,但甄选信息可是一件非常麻烦的事情。如果你想用更垂直更方便的搜索工具,请看下面6个。在一定程度上,它们能帮你摆脱仗势欺人的百度,还能比别人搜到更多资源。基于大家日常上

  • 简述分组密码的加密分组链接模式的工作原理及其特点(密码学移位密码加密解密)

    密钥生成如何安全地生成密钥。即如何生成可信任的密钥,保证用户得到的密钥是安全的,生成密钥的机器或程序是可信的。 如何生成安全的密钥。安全的密钥没有统一准确的定义,但一般来说是指密钥抗猜测和抗穷举等针对密钥攻击的能力。涉及密钥长度和密钥强弱的问题。分组加密对称加密算法按其加密数据的方式一般来说可以分成两种类型:分组加密和序列加密。 分组加密又称为块加密,是将要处理的数据分成固定的长度,然后在这固定长度的数据上使用密码算法进行计算。 序列加密模式又称为流加密方式,是对要处理的数据按位(或字

  • mysql慢查询日志_sql慢查询日志

    mysql慢查询日志_sql慢查询日志1、显示慢日志是否开启showvariableslike‘%slow_query_log%’2、查询超过多少秒才记录showvariableslike‘%long_query_time%’3、配置分全局配置和配置文件的配置全局配置1)将slow_query_log全局变量设置为“ON”状态setglobalslow_query_log=‘ON’;2)查询超过1秒就记录setgloballong_query_time=13)设置慢查询日志存放的位置setg

    2022年10月11日
  • c语言入门教程–-8循环控制语句

    c语言入门教程–-8循环控制语句

  • administrator改名字_win10改了用户名无法登录

    administrator改名字_win10改了用户名无法登录网友求助:xp用administrator_XP系统修改administrator的用户名_xpadministrator问题不想添加多一个用户的办法?????????????????最佳答案说实话没有看懂题主的要求。我只能从你题面对描述,即将高级管理员帐户“Administrator”改变成其他名字来解答。要想将WindowsXP中要将默认的系统用户名改变成其他名称是可以实现的,但是需要调用“组…

    2022年10月14日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号