SQLServer------存储过程的使用

转载:

http://www.cnblogs.com/hoojo/archive/2011/07/19/2110862.html

例子:

1.学生表

CREATE TABLE [dbo].[Student](
    [StudentID] [int] IDENTITY(1,1) NOT NULL,  --主键
    [Number] [varchar](15) NULL,   --学号
    [Name] [nchar](8) NULL,  --学生姓名
    [ClassID] [int] NOT NULL  --学生所在班级ID
)

插入学生数据:
declare @count int =1;
while @count < 100
begin
insert into Student select @count,‘学生‘+ convert(varchar,@count,15),cast(ceiling(rand() * 5) as int)
set @count = @count + 1;
end

2.教师表

create table Teacher(
    [TeacherID] [int] IDENTITY(1,1) NOT NULL, --老师ID
    [TeacherName] [nchar](8) NULL,  --老师名称
    [ClassID] [int] NOT NULL  -- 老师所教的班级ID
)

插入数据:
insert into Teacher select ‘陈老师‘, 1
insert into Teacher select ‘李老师‘, 3
insert into Teacher select ‘王老师‘, 2
insert into Teacher select ‘赵老师‘, 5

3.班级表

create table Class(
    [ClassID] [int] IDENTITY(1,1) NOT NULL,   --班级ID
    [Code] [varchar](3) NULL,   --班级编号
    [ClassName] [nchar](8) NULL  --班级名
)

插入班级数据:
insert into Class select ‘003‘,‘计算机3班‘
insert into Class select ‘001‘,‘计算机1班‘
insert into Class select ‘002‘,‘计算机2班‘
insert into Class select ‘005‘,‘计算机5班‘
insert into Class select ‘004‘,‘计算机4班‘

4.创建存储过程

create proc proc_getStudentRecord(
    @pageIndex int,         --页码
    @pageSize int,          --每页信息数
    @name nchar(8) output   --任课老师
)
as
    declare @startRow int, @endRow int
    set @startRow = (@pageIndex - 1) * @pageSize + 1
    set @endRow = @startRow + @pageSize -1

    select s.Number,s.Name,b.Code,b.ClassName from(
        select *, row_number() over (order by StudentID asc) as num from Student a where exists(select 1 from Teacher t where a.ClassID = t.ClassID and t.TeacherName = @name)
    ) s
    join
    Class as b on
    b.ClassID = s.ClassID
    where s.num between @startRow and @endRow;

go

4.执行存储过程

exec proc_getStudentRecord 1,5,‘陈老师‘
时间: 2024-10-12 12:02:11

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

对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后边的语句受影响的行

解剖SQLSERVER 第十五篇 SQLSERVER存储过程的源文本存放在哪里?(译)

解剖SQLSERVER 第十五篇  SQLSERVER存储过程的源文本存放在哪里?(译) http://improve.dk/where-does-sql-server-store-the-source-for-stored-procedures/ 目前我正在扩展OrcaMDF Studio的功能 不单只支持系统表,DMVs 和用户表 而且也要支持存储过程.那很容易,我们只需要查询sys.procedures --或者查询sys.sysschobjs, 因为当SQLSERVER没有在运行的时候我

SQLServer - 存储过程基本语法

oracle的建表sql转成sqlserver的建表sql时的注意点 : 1.所有的comment语句需要删除. 2.clob类型转换为text类型. 3.blob类型转换为image类型. 4.number类型转换为int,number(16,2)等转换为decimal(16,2),number(18)转换为bigint. 5.default sysdate改为default getDate(). 6.to_date('2009-12-18','yyyy-mm-dd')改为cast('2009