sqlserver,获取调用存储过程返回数据的方法。

c#执行sqlserver带返回参数的存储过程 阅读详情
AI摘要

本文详细介绍了在SQL Server中通过三种方式从存储过程获取返回数据的方法:使用临时表接收SELECT结果集、利用OUTPUT参数返回值以及通过RETURN语句返回过程状态。这三种方法分别适用于不同的场景,为数据库开发提供了灵活的选择。

sqlserver,获取调用存储过程返回数据的方法。

1,获取存储过程最后select返回的结果集。SELECT 数据集返回值。

因为select返回的结果是一个表。所以返回的结果需要用一个表接收。使用临时表接收。

被调用的存储过程最后是这样:返回了一个空标题的字段。

什么都不处理,调用存储过程,发现是这样:

复制代码

ALTER PROCEDURE [LC0**999].[ERP_***_CreateBatchCode]
(
    @MaterialID  varchar(50),  
    @CompanyID   varchar(50),  
    @Flag        varchar(50),  
    @PrefixObj   varchar(50) 
)
AS
BEGIN
    declare @v_batchcode varchar(36);
    exec @v_batchcode=erp_IM_BatchesSN_CreateCode @MaterialID,@CompanyID,@Flag,@PrefixObj; 
   
    select @v_batchcode BATCHCODE;
END   

复制代码

执行结果:

会发现返回了三个数据集,不仅原来的存储过程会返回一个数据集(这里的情况是不需要那个存储过程返回,而是赋值给变量,由变量返回),这里调用原来的存储过程也并没有真正赋值给变量。所有返回的变量的值仍然为空。

我们真正的需求是只返回一个被赋值了的BATCHCODE。

修改:用临时表接收返回结果集,把临时表的相关字段赋值给变量。如下:

复制代码

ALTER PROCEDURE [LC00****].[ERP_****_CreateBatchCode]
(
    @MaterialID  varchar(50),  
    @CompanyID   varchar(50),  
    @Flag        varchar(50),  
    @PrefixObj   varchar(50) 
)
AS
BEGIN

    declare @v_batchcode varchar(36);
    
    CREATE TABLE [LC0019999].[batchtemp](
        batchcode    varchar(36)
    )

    INSERT batchtemp exec @v_batchcode=erp_IM_BatchesSN_CreateCode @MaterialID,@CompanyID,@Flag,@PrefixObj; 
    
    SELECT @v_batchcode=batchtemp.batchcode FROM batchtemp;
    
    DROP TABLE batchtemp; 

    select @v_batchcode BATCHCODE;

END

复制代码

执行结果:

可见,被调用的存储过程没有返回一个select结果集,并且,值被成功的赋值给变量。只返回了一个数据集。

 

2,OUPUT参数返回值

复制代码

CREATE PROCEDURE [dbo].[nb_order_insert](
@o_buyerid int ,
@o_id bigint OUTPUT
)
AS
BEGIN
SET NOCOUNT ON;
BEGIN
INSERT INTO [Order](o_buyerid )
VALUES (@o_buyerid )
SET @o_id = @@IDENTITY
END
END

复制代码

存储过程中获得方法:

DECLARE @o_buyerid int
DECLARE @o_id bigint
EXEC [nb_order_insert] @o_buyerid,@o_id output

3,RETURN过程返回值

复制代码

CREATE PROCEDURE [dbo].[nb_order_insert](
@o_buyerid int ,
@o_id bigint OUTPUT
)
AS
BEGIN
SET NOCOUNT ON;
IF(EXISTS(SELECT * FROM [Shop] WHERE [s_id] = @o_buyerid ))
BEGIN
 INSERT INTO [Order](o_buyerid ) VALUES (@o_buyerid ) 
 SET @o_id = @@IDENTITY 
 RETURN 1 — 插入成功返回1 
END 
ELSE 
 RETURN 0 — 插入失败返回0 END

复制代码

存储过程中的获取方法

DECLARE @o_buyerid int
DECLARE @o_id bigint
DECLARE @result bit
EXEC @result = [nb_order_insert] @o_buyerid ,o_id output
Sql Server 存储过程调用存储过程接收输出参数返回值 主要介绍了Sql Server 存储过程调用存储过程接收输出参数返回值,需要的朋友可以参考下 立即下载

相关推荐

【软件逆向学习记录】x64dbg调试器入门2:主调试窗口功能及字符串搜索功能介绍

在x64dbg中, ​​CPU视图 是调试过程中最核心的界面,通常被称为​​主调试窗口​​或​​调试视图​​,总体分为四个区域,代码区(反汇编),数据区(内存窗口),寄存器区和堆栈区,详细位置如下图:示例数据代码区最左侧为内存地址,第二块区域为程序代码值,原始程序代码经编译和汇编后变为二进制机器码存储在计算机中,调试器将其展示为易于阅读的十六进制,第三块区域是机器码反汇编后的汇编代码,最右侧为代码的注释窗口,有一些原始的注释,也可以自己添加注释PS:汇编和反汇编解释。

tusikong的博客 2923

SQLSERVER 存储过程实现分页查询 C#后台获取查询结果集

一、为什么要用分页查询 二、怎样用分页查询 三、存储过程编写 四、后台获取结果集

XWL1992的专栏 2305

从PCIe 3.0到6.0:为什么“阻抗一致性”比“绝对值”更重要?聊聊连接器与板材的选型影响

本文探讨了PCIe从3.0到6.0演进过程中,阻抗一致性相比绝对值的重要性,分析了连接器与板材选型对高速信号完整性的影响。随着速率提升至64GT/s,系统级阻抗控制和验证成为关键,文章提供了选型指南、验证方法论及工程实践建议,帮助工程师应对高速设计挑战。

weixin_42556197的博客 384

SQL Server 存储过程返回结果集的几种方式

SQL Server 返回结果集的几种方式 2017年12月18日 21:52:24xxc1605629895阅读数 7033更多 分类专栏:sqlserver 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.youkuaiyun.com/xxc1605629895/article/details/78...

cxu123321的博客 9331

SpringCloudGateway网关高频20个面试题整理

Spring Cloud Gateway 是基于 Spring 5、Project Reactor 和 Spring Boot 2 构建的 API 网关,提供动态路由、监控、弹性、安全等核心功能。Spring Cloud Gateway 是 Spring Cloud 生态中的 API 网关,用于微服务架构中的请求路由、负载均衡、限流、鉴权等。实现@Component@Override// 逻辑处理。

u012024132的专栏 1114

【STM32项目】基于stm32智能鱼缸控制系统的设计与实现(完整工程资料源码)

随着现代化经济的快速发展,物质条件富足的人开始追求精神富足,越来越多的人通过饲养观赏鱼来充实生活、释放压力,但并非所有饲养者都有时间和经验来管理好鱼缸。一种由单片机控制,可实时检测和调节鱼缸环境,可把鱼缸环境实时反映给用户并能被用户远程操控的系统,可以解决养鱼成活率低、耗费时间和精力、参与感不强等诸多难题。

嵌入式技术开发 7354

SQL Server 中操作存储过程返回的表结果集

先将整个代码放出来,接下来一步步说明。 create table #temTable( FSerialNum int, billNo varchar(200), Flevel varchar(200), beginDate datetime, FNumber varchar(500), FName varchar(500), FModel varchar(1000...

Alone_in_的博客 1万+

基于ADPSS的直驱风电单机模型建模指南:跟网型与构网型

本文介绍了基于ADPSS平台的直驱风电单机建模方法,包含跟网型和构网型两种控制策略。模型采用模块化设计,共享风力机与桨距角控制部分,通过FORTRAN语言实现自定义建模。跟网型采用锁相环同步和矢量控制,构网型则采用虚拟同步机技术模拟同步发电机特性。详细阐述了风力机气动模型、桨距角控制算法及代码实现,为新能源并网仿真提供了实用参考。全文约150字,涵盖模型架构、数学方程和ADPSS实现要点。

huanghm88的专栏 170

sqlserver存储过程返回结果_数据库基础知识:SQL Server存储过程入门必知

什么是存储过程SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。存储过程语法CREATE PROCEDURE 过程名([[IN|OUT|INOUT] 参数名 数据类型[,[IN|OUT|INOUT] 参数名 数据类型…]]) [特性 ....

weixin_35925259的博客 1366

QT+Halcon实现螺纹检测

工业上要检测螺丝的内外直径、内外牙距、内外角度,现在比较好用的图像处理库,开源的opencv,收费的有halcon。为了实现螺纹检测,和对比螺纹检测拿个库比较好。分别用opencv和halcon实现了螺纹检测,通过对比发现用halcon实现的效果比较。现在用博客把实现过程记录下来: 1、需要检测的螺纹数据如下: 2、为了实现检测螺丝以上数据,螺纹内径、螺纹外径、螺纹外牙距、螺纹...

专注现代C++实战,从核心语法到高性能编程,助力开发者深入掌握系统级编程精髓。 7052

Allegro如何画Photoplot_Outline操作指导

在用Allegro进行PCB设计的时候,最后进行光绘输出前,Photoplot_Outline是必备一个图形,所有在Photoplot_Outline中的图形将被输出,Photoplot_Outline以外的图形都将不被输出。如何绘制Photoplot_Outline,具体操作如下。如何画Photoplot_Outline操作指导。

weixin_54787054的博客 2638

java调用存储过程返回结果集 sqlserver_连接sqlServer数据库&jpa调用存储过程Java获取存储过程返回的多个结果集JAVA调用sqlserver存储过程的实现(返回多个结果集的实...

存储过程:BEGINselect*fromteacher;SELECT*FROMstudent;ENDpublic Object GetMyBOProjectProductList(@PathVariable(value = "userid") int userid) {String driver = "com.microsoft.sqlserver.jdbc.SQLServerDri...

weixin_39627430的博客 852

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

java 存储过程 多个结果集_连接sqlServer数据库&jpa调用存储过程Java获取存储过程返回的多个结果集JAVA调用sqlserver存储过程的实现(返回多个结果集的实现)jdbc多结果集...

存储过程:BEGINselect*fromteacher;SELECT*FROMstudent;ENDpublic Object GetMyBOProjectProductList(@PathVariable(value = "userid") int userid) {String driver = "com.microsoft.sqlserver.jdbc.SQLServerDri...

weixin_29416781的博客 279

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

SQLServer和ORACLE 存储过程的调用(返回结果集)

SQLServer相比Oracle是很随便的,存储过程里select * from tb 就能返回一个结果集出来。在C#里调用时,能exec proc直接出结果集。 --SQL中返回结果集的存储过程:create proc retable(@i int)asbeginselect * from a where id=@iendGO //C#里调用存储过程返回结果集的一种简便

siegebaoniu的专栏 4597

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

连接sqlServer数据库&jpa调用存储过程Java获取存储过程返回的多个结果集JAVA调用sqlserver存储过程的实现(返回多个结果集的实现)jdbc多结果集(getMoreResults)...

存储过程: BEGIN   select * from teacher;   SELECT * FROM student; END   public Object GetMyBOProjectProductList(@PathVariable(value = "userid") int userid) { String driver = "com.microsoft.sqlserver...

weixin_34327223的博客 745

python获取数据库的存储过程_python远程调用sqlserver存储过程记录

开发中需要python远程调用sqlserver存储过程。搜索了网上有两种方式,pymssql和pyodbc。开始采用第一种方式开发,不过无法拿到存储过程中的返回数据,后采用pyodbc开发,当然存储过程中返回数据并不是直接return返回,需要设定一个output类型的参数,然后在结束时设置该参数并select一把方可得到返回。网上也有另外一种思路,写个存储过程中间件调用目标存储过程避免每有返回...

weixin_39561577的博客 382

Golang调用mssql存储过程

由于项目需要使用GO来调用mssql存储过程,所以不得已研究一下,整个过程是比较费劲的,因为本人还处于GO小白状态,公司项目是基于网狐的棋牌平台,网狐项目不得不说还是比较整洁清晰的,但是由于出道以来一直在用这套框架大概有7-8年时间太久了有点腻了,同时为了学习一下新技术新知识,最终选定用GO语言重写服务端。 为了顺利平稳移植重构,我决定分阶段进行首先重写协调服务器,因为本身协调服务器工作量是最小...

weixin_42780662的博客 4950

java调用存储过程sqlserver_Java调用SqlServer存储过程怎么实现 | 学步园

在使用Java开发时,经常会遇到调用SqlServer存储过程的问题。下面学步园小编来讲解下Java调用SqlServer存储过程怎么实现?Java调用SqlServer存储过程怎么实现1.数据库连接packagecom.hujuan.conn;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLExce...

weixin_39792519的博客 190

帆软js调用sqlserver存储过程并获取返回值

当存储过程中有返回值时,但是前端获取不到返回值时,检查下存储过程中是否开启。

qq_38199593的博客 750

SQLSERVER 存储过程调用存储过程,如何得到输出参数

create   proc   a          param1   varchar(16),          param2   varchar(16)   output    as   如何在另一个存储过程中调用a     ,并且获得param2????  Code highlighting produce

考拉的桉树林 1554

Qt调用sqlserver的存储过程

qt通过驱动连接到sqlserver,调用存储过程以及遇到的问题。

sinat_33419023的博客 1193

VC调用存储过程

VC中使用ADO调用存储过程实现方法 开发环境是VS2005  ,数据库是SQL Sever 20001. 在进入正题之前,先讲点别的,如何在VC中连接Sybase数据库,   连接字符窜为,  _bstr_t strCnn(/"Driver={Sybase System 11};Srvr=RRRRR;Uid=RRR_Mao_bb1;Pwd=user2/");这

ljz888666555的专栏 682

python执行sqlserver存储过程_Python使用表值param调用sqlserver存储过程

根据对我的问题的评论,我设法让存储过程使用表值参数运行(并从SP获取返回值)最后的脚本如下:import pandas as pdimport pytdsfrom pytds import loginimport sqlalchemy as safrom sqlalchemy import create_engineimport sqlalchemy_pytdsdef connect():retu...

weixin_39568706的博客 646
上一篇: sql获取当前时间
下一篇: SQL SERVER while循环
thre3stone
博客等级 码龄15年 5粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值