`
happmaoo
  • 浏览: 4504387 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

使用 OUTPUT 参数返回数据

Go 
阅读更多


使用 OUTPUT 参数返回数据
如果在过程定义中为参数指定 OUTPUT 关键字,则存储过程在退出时可将该参数的当前值返回至调用程序(是否是有点儿像“按地址传递”)。若要用变量保存参数值以便在调用程序中使用,则调用程序必须在执行存储过程时使用 OUTPUT 关键字。

示例
下列示例显示有一个输入参数和一个输出参数的存储过程。存储过程中的第一个参数 @title 将接收由调用程序指定的输入值,而第二个参数 @ytd_sales 将向调用程序返回该值。SELECT 语句使用 @title 参数以获得正确的 ytd_sales 值,并将该值赋予 @ytd_sales 输出参数。

CREATE PROCEDURE get_sales_for_title
@title varchar(80), -- This is the input parameter.
@ytd_sales int OUTPUT -- This is the output parameter.
AS

-- Get the sales for the specified title and
-- assign it to the output parameter.
SELECT @ytd_sales = ytd_sales
FROM titles
WHERE title = @title

RETURN
GO

下列程序用输入参数值执行存储过程,并将存储过程的输出值保存到调用程序的局部变量 @ytd_sales_for_title 中。

-- Declare the variable to receive the output value of the procedure.
DECLARE @ytd_sales_for_title int

-- Execute the procedure with a title_id value
-- and save the output value in a variable.

EXECUTE get_sales_for_title
"Sushi, Anyone?", @ytd_sales = @ytd_sales_for_title OUTPUT

-- Display the value returned by the procedure.
PRINT 'Sales for "Sushi, Anyone?": ' + convert(varchar(6),@ytd_sales_for_title)
GO

Sales for "Sushi, Anyone?": 4095

执行存储过程时,也可为 OUTPUT 参数指定输入值。这样将允许存储过程从调用程序中接收一个值,更改该值或对该值执行操作,然后将新值返回至调用程序。在前面的示例中,可在执行存储过程前将一个值赋予 @ytd_sales_for_title 变量。@ytd_sales 变量在存储过程主体中包含参数值,而该存储过程在退出时,将 @ytd_sales 变量值返回至调用程序。这常常被称作"传址调用功能"。

如果在执行存储过程时对参数指定 OUTPUT,而在存储过程中该参数又不是用 OUTPUT 定义的,那么将收到一条错误信息。在执行带有 OUTPUT 参数的存储过程时,可以不指定 OUTPUT。这样不会返回错误,但将无法在调用程序中使用该输出值。


(Q:)还有return与output有何区别?

(A:)return 只能一个;output 可以有多个
(Q:)有二个过程!
/*
过程1
检测用户名是否重复*/
create proc check_user
@name varchar(15),
@state int output
as
begin
if exists(select name form tblname where name=@name)
set @state = 1
end

/*
过程2
想调用check_user的@state值,如果不为1就写入数据表,但不知如何取得该值。
*/
create proc insert_new
@name varchar(15),
@pw varchar(15),
@email varchar(20)
as
begin
'当@state=0时
insert into-------
end

(A:)create proc check_user @name varchar(15),@state int output
as
if exists(select name form tblname where name=@name)
set @state = 1
else
set @state = 0
GO

create proc insert_new @name varchar(15),@pw varchar(15),@email varchar(20)
as
declare @state int
exec check_user @name,@state output
if @state=0
insert into ...
GO

(A:)create proc check_user @name varchar(15),@state int output
as
if exists(select name form tblname where name=@name)
set @state = 1
else
set @state = 0
GO

create proc insert_new @name varchar(15),@pw varchar(15),@email varchar(20)
as
declare @state int
exec check_user @name,@state output
if @state=0
insert into ...
GO

分享到:
评论

相关推荐

    C# 执行存储过程,自动产生序列号,反回数据集,反回OUTPUT参数

    在C#中,你可以将这个序列号作为OUTPUT参数返回: ```csharp cmd.Parameters.Add("@NewId", SqlDbType.Int).Direction = ParameterDirection.Output; cmd.ExecuteNonQuery(); int newId = (int)cmd.Parameters...

    存储过程OUTPUT实例

    通过这个实例,我们了解了如何在SQL Server中定义和使用存储过程,特别是如何利用OUTPUT参数进行数据的返回。此外,我们还学习了如何使用动态SQL语句来增强存储过程的功能。这些技术对于开发复杂的应用程序和维护...

    使用SQLHelper类调用带输出、返回参数的存储过程

    下面,我们将深入探讨如何使用`SQLHelper`类来调用带有输出或返回参数的存储过程,这在实际项目中极为常见。 ### 1. SQLHelper 类的作用 `SQLHelper`类是.NET框架中用于封装对数据库进行各种操作的方法集合,它的...

    Mssql 存储过程 返回值Return 与output 区别与应用.docx

    即使使用了`RETURN`或`OUTPUT`,存储过程仍然可以返回一个或多个数据集,这些数据集可以通过`SELECT`语句生成,并在调用者处通过数据适配器或其他方式处理。 综上所述,`RETURN`和`OUTPUT`在Mssql存储过程中的应用...

    Kettle循环遍历结果集作为参数传入转换

    5. **输出到txt文档**:最后,使用"Text File Output"步骤将处理后的数据写入TXT文件。你可以配置文件路径,以及决定是以追加还是覆盖的方式写入。 6. **整合与测试**:将所有步骤连线并配置好之后,运行整个工作流...

    C#使用ExecuteReader返回DataReader

    在C#编程中,`ExecuteReader`方法是用于执行SQL查询或...5. 使用`ExecuteNonQuery`(尽管不返回数据)获取存储过程的返回值。 遵循这些步骤,你就能正确地处理那些同时包含查询结果、输出参数和返回值的存储过程了。

    C#获取存储过程的返回参数值

    存储过程可以有返回值(Return Value)以及输出参数(Output Parameter),它们可以帮助我们传递和获取数据。以下是如何在C#中获取这两种类型参数的详细步骤。 1. 获取 Return 返回值 存储过程的返回值通常用来...

    sql中返回参数的值

    在 SQL 中,输出参数(Output Parameter)是一种特殊类型的参数,它可以在存储过程或函数中将数据返回给调用方。输出参数通常用于返回多个值、数据集或错误信息等。输出参数的使用可以提高代码的灵活性和可重用性。 ...

    PHP调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解

    在绑定参数时,我们需要指定参数类型为`PDO::PARAM_INT`或`PDO::PARAM_STR`,并且由于它们是output参数,还需要使用`PDO::PARAM_INPUT_OUTPUT`。同时,对于`PDO::PARAM_INT`类型的参数,我们还应提供一个长度值,...

    简单使用curl进行get请求并将服务器返回存进本地文件

    这个命令会把`https://www.example.com`返回的内容写入`output.txt`文件中。如果URL指向的是一个JSON、XML或其他结构化数据的API,这将很有用,因为你可以直接保存原始数据供后续处理。 `curl` 还有许多其他选项...

    delphi cmd 获取命令返回(源码)

    本文将深入探讨如何使用Delphi通过CMD(命令提示符)执行命令并获取返回结果。这个主题对于系统集成、自动化脚本编写以及需要与操作系统底层交互的应用程序开发至关重要。 首先,我们需要了解CMD在Delphi中的基本...

    python抓取高德POI数据,突破数据量限制

    在脚本中,可能使用了参数化查询,比如设置特定的区域(可能通过经纬度坐标或者行政区划代码)、POI类型(参照`高德地图poi分类表.xlsx`)、搜索范围以及其他高级筛选条件,以提高数据获取的效率和针对性。...

    CMD调用并读取返回信息

    下面是一个简单的示例,展示了如何使用`subprocess.check_output()`函数执行CMD命令并获取返回结果: ```python import subprocess # 执行CMD命令 result = subprocess.check_output("dir", shell=True) ...

    C#调用cmd命令行设置命令 并获取返回的数据

    总的来说,C#调用CMD命令行并获取返回数据是通过`System.Diagnostics.Process`类来实现的,这使得我们可以方便地执行各种系统级操作,增强了C#程序的功能。在实际开发中,这个技巧常用于系统集成、自动化测试、文件...

    oracle存储过程返回多行多列的结构化数组,java调用并解析

    当需要返回的数据不仅仅是单行单列时,可以使用结构化数组来实现多行多列的结果。Java作为常用的后端开发语言,与Oracle数据库交互时,调用这些存储过程并解析返回的数据是一项常见任务。 首先,我们需要理解Oracle...

    使用 ADO.NET 和 C# .NET 调用带参数的存储过程

    存储过程是一种预编译的SQL代码集合,存储在数据库服务器上,可以接受输入参数,执行复杂的数据处理,并返回结果或执行特定操作。它们提高了数据处理效率,增强了应用程序的安全性和可维护性。 ### 二、调用带参数...

    SQL Server存储过程参数的指定.pdf

    输入参数允许用户传递数据到存储过程中,而输出参数则允许存储过程返回数据给调用者。输入/输出参数同时具备输入和输出的功能。 二、指定存储过程参数 1. 输入参数: 在创建存储过程时,使用`DECLARE`关键字定义...

    点击页面链接后根据参数调用后台方法,获取数据并显示数据到弹出div上

    在服务器端,你需要设置一个能够接收参数并返回数据的接口。这可能是一个HTTP GET或POST请求,具体取决于你的应用需求和后端框架。例如,如果是使用Node.js和Express,你可以创建一个路由处理函数: ```...

    Servlet及Ajax数据交互

    在Servlet中,我们通常会使用`HttpServletRequest`和`HttpServletResponse`对象来获取请求参数和设置响应内容。例如,以下是一个简单的Servlet代码片段: ```java import javax.servlet.http.*; public class ...

    Matlab GUI参数传递方式

    - 如果在GUI的OpenFcn中不使用`uiwait`,程序会直接跳转到OutputFcn,这意味着即使之后对handles.output进行了更改也无效。 - 使用`uiwait`后,只有在执行了`uiresume`之后才会继续执行到OutputFcn,用户可以在此...

Global site tag (gtag.js) - Google Analytics