`
flash7783
  • 浏览: 308549 次
  • 性别: Icon_minigender_1
  • 来自: 南昌
社区版块
存档分类
最新评论

【SQL Server】存储过程的设计与概念(2)从存储过程接收信息

    博客分类:
  • SQL
阅读更多

从存储过程结束信息的途径有4种:
    1、结果集
    2、输出参数
    3、返回值
    4、全局游标

返回结果集:
    为了从存储过程中获取结果集,需要在存储过程主体中插入返回结果集的T-SQL语句,最简单的方法就是使用SELECT语句,但也可以调用另一个存储过程。
    也可以从一个存储过程中返回多个结果集,这样的存储过程只不过是多包含几个SELECT语句,但要注意有些客户端的数据访问技术可以访问所有的结果集如ADO,ADO.NET,但是有的技术只能访问一个结果集。

输入参数与输出参数:
    创建存储过程使可以包含一个由逗号(,)分割的参数列表,分为两种类型,分别为输入参数和输出参数。参数的默认类型为输入参数:

create proc getJobInfo
@job_id int
as
select * from jobs where job_id=@job_id
go
execute getJobInfo 1

 如下包含一个输出参数,注意output的使用,以及在调用存储过程时接收输出参数的方法:
 

create proc getJobDesc
 @job_id int,
 @job_desc varchar(2000) output
 as
 select @job_desc=job_desc from jobs where job_id=@job_id
 go
 
 declare @desc varchar(2000)
 execute getJobDesc 1,@desc output
print @desc

 参数的默认值:
   如果存储过程语句具有参数,则必须在调用存储过程时提供这些参数的值,否则SQL SERVER 会报错。但也可以为这些参数设定默认值,这样用户就不一定非要提供这些参数了!

ALTER  proc getJobInfo
@job_id int=1
as
select * from jobs where job_id=@job_id
go

execute getJobInfo
execute getJobInfo 2

 按名称传参与按位置传参:
    按位置传参要求各个参数的顺序必须是一定的,而按名称传参则无此限制

 create proc getJob
 @min_lvl int,
 @max_lvl int
 as
 begin
   select * from jobs where min_lvl>@min_lvl and max_lvl<@max_lvl
 end
 
 --按名称传参
execute getJob @max_lvl=800,@min_lvl=10
---按位置传参
execute getJob 10,800 --相当于:execute getJob @min_lvl=10,@max_lvl=800

 返回值:
   每一个存储过程都可以以一个Return语句结尾,该语句的后面紧跟可以被调用者读取的integer值,或结果为整型值的表达式,如果没有显式的设置该值,怎返回默认值0。因为返回值局限于整形数据类型,他们最常用的场合就是向调用者发送状态和错误代码!
   注意以下调用返回值时的方法与OUTPUT的不同:
 

alter proc getJob
 @job_id int,
 @desc varchar(2000) output
 as
 begin
   select @desc=job_desc from jobs where job_id=@job_id 
   return @@error
 end
 
declare @id int,@desc varchar(2000),@result int
-------把存储过程直接赋值给用于接收返回值的变量
execute @result=getJob 1,@desc output
select @result,@desc 

开发人员在运行任何T-SQL语句批处理时,SQL SERVER都要执行以下3步:
       1、解析批处理
       2、编译批处理
       3、执行批处理开发人员在运行任何T-SQL语句批处理时,SQL SERVER都要执行以下3步:
       1、解析批处理
       2、编译批处理
       3、执行批处理
解析
  所谓“解析”是指SQL SERVER 命令解析模块首先检查批处理语法的过程。如果没有找到错误,命令解析器将源代码细分成多个逻辑单元,比如关键字、标识符以及运算符。接着解析器构建一个内部结构,然后使用这个内部结构描述执行请求操作或从源数据提取请求结果集所需的一系列步骤。如果该批处理包含一个查询,那么这个内部结构被称作一个查询树;如果该批处理包含一个过程,那么他被称为一棵顺序树。

编译:
  在这一步中,顺序树被用来生成一个执行计划。优化器模块对可从源表检索信息的各种方法进行分析。它试图寻找一种利用最小资源的最快方法,同时还补充了执行时需要使用的任务列表(例如:检查安全,确认是否强制约束,如果在处理时需要合并的话,还要包含触发器,等等)。结果是一个被称为执行计划的内被结构。

执行:
  执行计划存储在过程告诉缓存中,它可以在那里被执行。执行计划中的不同步骤将被发送到关系引擎中的不同模块进行执行;DML管理器、DDL管理器、存储过程管理器、事务处理管理器或实用工具管理器。处理结果将以结果集的形式被收集并发送给调用者。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/shaoboyy/archive/2008/11/12/3281634.aspx 

分享到:
评论

相关推荐

    执行Sqlserver存储过程返回DataSet

    ### 执行SQL Server 存储过程并返回DataSet 在软件开发过程中,经常需要与数据库进行交互,其中一种常见的场景就是通过调用存储过程来获取数据并处理这些数据。本篇文章将详细探讨如何在C#中执行SQL Server的存储...

    SQLserver存储过程与触发器.pdf

    SQL Server 存储过程与触发器 本章节主要讲述了 SQL Server 中的存储过程和触发器的概念、类型、创建、使用和优点等。 存储过程概述 存储过程是 SQL Server 服务器上的一组预编译的 Transact-SQL 语句,用于完成...

    SQLSERVER存储过程例子

    以下是针对"SQLSERVER存储过程例子"的详细解释。 1. **存储过程的概念**: 存储过程是一组为了完成特定功能的SQL语句,这些语句被组合在一起并保存在数据库中,用户可以通过调用存储过程的名字来执行这些语句。...

    SqlServer存储过程

    ### SqlServer存储过程详解 #### 一、存储过程概述 **存储过程**是数据库中一种重要的数据对象,它实质上是一组预编写的T-SQL命令集,通过定义特定的功能来实现复杂的数据处理任务。存储过程可以被视为数据库的...

    java调用sqlserver存储过程.pdf

    "Java 调用 SQL Server 存储过程" Java 调用 SQL Server 存储过程是指在 Java 应用程序中调用 SQL Server 数据库中的存储过程,以实现数据的增删改查等操作。下面是关于 Java 调用 SQL Server 存储过程的知识点: ...

    Sql Server 存储过程调用存储过程接收输出参数返回值

    创建存储过程: ALTER PROCEDURE [dbo].[GetCustomers] (@rowcount INT OUTPUT) AS SELECT [CustomerID] ,[CompanyName] ,[ContactName] ,[ContactTitle] ,[Address] ,[City] ,[Region] ,[PostalCode] ,...

    sqlserver的存储过程与 where in 多值参数

    本文将探讨在SQL Server中,存储过程与`WHERE IN`子句结合使用时,处理多值参数的几种方法。 **方法一:拼接SQL字符串并调用`EXEC`** 这是最简单也是最直观的方法。你可以在存储过程中接收一个包含多个值的参数,...

    SQL Server存储过程

    **SQL Server 存储过程详解** SQL Server 存储过程是一种预编译的数据库...通过本实验,我们不仅了解了存储过程的基本概念,还学会了如何根据实际需求设计和编写不同类型的存储过程,从而更好地管理和操纵数据库数据。

    SQLServer2000存储过程与XML

    在SQL Server 2000中,存储过程和XML是两个关键的概念,它们在数据库管理和数据交换中扮演着重要角色。 存储过程是预编译的SQL语句集合,可以视为数据库中的可重用函数。它们提供了性能优势,因为一旦编译,后续...

    C#创建SQL Server存储过程帮助

    【C#创建SQL Server存储过程】在SQL Server 2005中,开发人员不再局限于使用T-SQL来创建存储过程、函数和触发器。得益于SQL Server 2005对.NET Common Language Runtime (CLR)的支持,我们可以使用C#、VB.NET等.NET...

    sql server调用存储过程

    这个例子定义了一个名为`usp_GetEmployeeDetails`的存储过程,它接收一个参数`@EmployeeID`,并返回对应ID的员工详情。 调用存储过程可以通过`EXEC`关键字完成: ```sql EXEC usp_GetEmployeeDetails 1 ``` 在...

    SQL 存储过程发送HTTP请求

    ### SQL存储过程发送HTTP请求知识点解析 ...综上所述,通过SQL Server存储过程发送HTTP请求是一项实用的技术,能够在数据库层面上实现与外部系统的有效集成。然而,在实际应用时还需要考虑到安全性、性能等方面的问题。

    解密SQL存储过程,适用于SQLSERVER2000存储过程

    ### 解密SQL Server 2000存储过程详解 #### 一、背景介绍 在数据库管理系统(DBMS)中,存储过程是一种预先编译好的SQL语句集合,它被保存在数据库服务器上,并且可以像调用普通函数一样被应用程序所调用。这种机制...

    C# winform调用SQL存储过程-菜鸟入门 详细注释

    内容概要:简单的C# winform调用存储过程实例,创建存储过程入参,通过SqlConnection对象和SqlCommand对象调用存储过程,获取存储过程的出参并显示出来,详细代码注释,希望对用到C#调用存储过程的小伙伴有帮助 ...

    简单的 Microsoft Sql Server 存储过程的使用

    在SQL Server数据库管理系统中,存储过程是预编译的SQL语句集合,它可以用来执行复杂的数据库操作,提高数据处理的效率,并提供了一种封装数据库逻辑的方式。本篇文章将深入探讨如何使用Microsoft SQL Server中的...

    sqlserver 快速查询存储过程是否用到某个表或者字段

    sqlserver 快速查询存储过程或者视图中是否用到某个表或者字段。

    SQL server 存储过程

    本文将详细介绍SQL Server中存储过程的基本概念、创建、调用、删除方法以及相关的数据类型、运算符和流程控制。 #### 二、创建存储过程 在SQL Server中,创建存储过程使用`CREATE PROCEDURE`语句。一个典型的存储...

    SQL Server 高级-(存储过程)

    在SQL Server中,存储过程是预编译的SQL语句集合,它们被封装为一个可重用的对象,便于管理和执行。存储过程不仅提高了代码的复用性,还能够提高数据库性能,通过减少网络流量和优化查询执行计划。本篇文章将深入...

    sql存储过程PPT

    【存储过程】是SQL Server数据库管理系统中的一个重要特性,它类似于编程语言中的函数,可以执行一系列预定义的SQL语句和管理任务。存储过程能够提高系统的效率、安全性,并且支持模块化程序设计,使得代码重用变得...

Global site tag (gtag.js) - Google Analytics