SQLServer存储过程入门

1、创建一个返回结果集的存储过程

create procedure firstpro
As
begin
    select * from dbo.Person
End

执行:
execute dbo.firstpro

如下图:

2、创建一个要求输入一个输入参数的存储过程

create procedure twopro
    @Id varchar(10) --定义一个输入参数
as
    select * from dbo.Person where Id = @Id  --要求Id列与输入的参数相等

执行:
execute dbo.twopro ‘1’

如下图:

3、创建一个要求输入两个输入参数的存储过程

create procedure threepro
    @Id int,  --定义一个输入参数
    @Name varchar(50)  --定义另一个输入参数
as
     select * from dbo.Person where Id =@Id and Name=@Name

执行:
execute dbo.threepro 1,’A’

如下图:

4、创建有返回值的存储过程

CREATE procedure fourpro1
    @Id int,
    @Name varchar(50),
    @returnage int output
as
    select @returnage = age from dbo.Person where @Id= Id and @Name=Name

执行:
    declare @returnage int  --声明一个变量用来接受执行存储过程的返回值

    execute dbo.fourpro1 2,‘B‘,@returnage output

    select @returnage as age --给返回的列值取一个列名
    

如下图:

CREATE procedure p6
--定义两个输入参数
    @Id int,
    @Name varchar(50)
as
declare @returnId int --定义一个int类型的变量
    select @returnId = Id from dbo.Person where Id= @Id and Name=@Name
--return语句可以接受一个整型表达式(int,smallint,tinyint),而不是一个整型值
    return @returnName

执行:
declare @id int

execute @id= dbo.p6 2,‘B‘

select @id as id

如下图:

5、存储过程输入参数添加默认值

CREATE procedure fivepro
    @Id int=2,
    @Name varchar(50)= ‘Bgh‘
as
    select * from dbo.Person where Id= @Id and Name=@Name

执行:
execute fivepro

备注:dbo.Person

时间: 2024-10-13 01:15:53

SQLServer存储过程入门的相关文章

SqlServer存储过程(增删改查)

* IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值. CREATE PROCEDURE [dbo].[PR_NewsAffiche_AddNewsEntity] ( @NewsTitle varchar(200), @NewsContent varchar(4000), @Creator varchar(50), @LastNewsId int output, @DepartId int ) AS BEGIN SET NOCOUNT ON; insert int

SQL 存储过程入门(事务)(四)

SQL 存储过程入门(事务)(四) 本篇我们来讲一下事务处理技术. 为什么要使用事务呢,事务有什么用呢,举个例子. 假设我们现在有个业务,当做成功某件事情的时候要向2张表中插入数据,A表,B表,我们插入的顺序是先插入A,再插入B表,如果都顺利插入成功了,当然没有问题,如果任意一张表插入失败了,而另一张表插入成功了,插入成功的表就是垃圾数据了.我们要判断,任意一张表插入失败都回滚,就是都不插入,这就是事务的基本使用. 一,sql事务定义 所谓事务是用户定义的一个数据库操作序列,是一个不可分割的工作

对sqlserver存储过程合游标的一些理解

在最近老板给我的数据库操作要求中,有一张类似购物清单样式的表,表中有客户ID,商品ID,商品数量,单价和商品总价,出售日期.还有一张商品折扣信息表,在这基础上商品价格同一商品价格会有差异,不同客户最高折扣额不同,折扣率也有差异,要求用sqlserver存储过程合游标表诉 一开始根本没有思路和头绪,听老大讲解是要用存储过程将查询到的数据存储好,再用游标循环遍历.对于存储过程合游标的表诉一直不太熟,之前只是将用sql语句查到的结果集放到存储过程里面,对于游标的了解不够深入.所以一开始也是想着用sql

SqlServer存储过程传入Table参数

今天是周日,刚好有空闲时间整理一下这些天工作业务中遇到的问题. 有时候我们有这样一个需求,就是在后台中传过来一个IList<类>的泛型集合数据,该集合是某个类的实例集合体,然后将该集合中的实例的数据一个个地插入到数据库或者更新到数据库中去.一开始我想到的方法是拼接字符串,然后通过存储过程对接收到的字符串进行截取,再一个个地插入或者更新到数据库中去,这是最原始的方法,不过过程会比较复杂,想到这就头疼.后来查找发现说SqlServer2008中为存储过程添加了一个新特性,可以传递表类型的参数,既然

SQLSERVER存储过程语法具体解释

SQL SERVER存储过程语法: Create PROC [ EDURE ] procedure_name [ ; number ]     [ { @parameter data_type }         [ VARYING ] [ = default ] [ OUTPUT ]     ] [ ,...n ] [ WITH     { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ] [ FOR REPLICATION ] AS sq

SQLServer存储过程基本语法

SQLSERVER: 变量的声明:声明变量时必须在变量前加@符号DECLARE @I INT 变量的赋值:变量赋值时变量前必须加setSET @I = 30 声明多个变量:DECLARE @s varchar(10),@a INT if语句: Java代码 if .. begin ... end else if .. begin ... end else begin ... end Example: Sql代码 DECLARE @d INT set @d = 1 IF @d = 1 BEGIN

sqlserver 存储过程中拼接sql语句 动态执行

ALTER PROC [dbo].[Student_Friend_Get] @startRowIndexId INT, @maxNumberRows INT, @schoolId INT, @gradeId INT, @cId INT, @keyWords NVARCHAR(100), @userName VARCHAR(50) AS BEGIN DECLARE @sqlfilter VARCHAR(max) SET @sqlfilter = ' ' IF(@schoolId <> -1) S

SQLSERVER存储过程语法详解

SQL SERVER存储过程语法: Create PROC [ EDURE ] procedure_name [ ; number ]     [ { @parameter data_type }         [ VARYING ] [ = default ] [ OUTPUT ]     ] [ ,...n ] [ WITH     { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ] [ FOR REPLICATION ] AS sq

sqlserver存储过程中,set rowcount 0是什么意思?

一般在语句中使用set rowcount是为了使后续的查询.更新.删除操作只影响指定的行数比如 一起执行如下语句set rowcount 1SELECT * FROM sysobjects结果只返回一行,而如果不加set rowcount 1或者使用set rowcount 0就会返回所有结果我想你见到的存储过程里包含set rowcount 0的情况是因为之前应该包含set rowcount 1之类大于0的set rowcount 设置,是为了使set rowcount 0后边的语句受影响的行