首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >我需要在从存储过程中选择语句的变量中获得int值吗?

我需要在从存储过程中选择语句的变量中获得int值吗?
EN

Stack Overflow用户
提问于 2017-05-05 02:57:28
回答 2查看 86关注 0票数 0

我有一张像这样的桌子和价值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
create table exTABLE(abc int)

insert into exTABLE(abc) values(10)
insert into exTABLE(abc) values(20)
insert into exTABLE(abc) values(30)

我已经创建了这样一个存储过程

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
alter procedure proced
    @tablename varchar(max)
as
begin
    declare @sql as varchar(max)
    set @sql='select max(abc) from '+@tablename

    --print @sql
    exec(@sql)
end

我将得到结果为30,这是正确的答案,但我需要将所选的结果30放在存储过程中的一个独立的int变量中,我需要得到它作为输出,也就是说,我尝试这样做

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
alter procedure proced
    @tablename varchar(max)
as
begin
    declare @sql as varchar(max)

    set @sql = 'select max(abc) from '+@tablename

    --print @sql
    exec(@sql)

    declare @i as int
    set @i = cast(@sql as int)

    exec(@i)
    print @i
end

我需要得到我30的印刷价值。任何替代方法都是非常有用的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-05 03:21:13

将@sql声明为nvarchar并使用sp_executesql。传递输入和输出参数,从int变量中的sql语句中收集结果。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 Alter procedure proced
 @tablename varchar(max)
 as
 begin

declare @sql as nvarchar(max),@i int
, @Param nvarchar(500);
set @sql='select @i1=max(abc) from '+@tablename
SET @Param = N'@i1 int OUTPUT';
EXEC sp_executesql @sql, @Param, @i1=@i OUTPUT;

Print @i
Select @i


end

exec proced 'exTABLE'
票数 2
EN

Stack Overflow用户

发布于 2017-05-05 03:03:27

这将同时打印和返回:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ALTER PROCEDURE proced
 @tablename VARCHAR(max)
 AS
 BEGIN

  DECLARE @sql AS VARCHAR(max)

  SET @sql='DECLARE @i AS INT; SELECT @i = MAX(abc) FROM '+@tablename + ';PRINT @i; SELECT @i'

  exec(@sql)

END
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43803199

复制
相关文章
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 BE
跟着阿笨一起玩NET
2018/09/19
6.2K0
你真的懂定义语句 "int a" 吗?
在刚开始学习一门新的编程语言的时候,我们通常的套路就是学习很多数据类型,定义各种变量。但你知不知道,数据类型的本质含义究竟是什么呢?
用户2617681
2019/08/08
1.2K0
服务器在选择的过程中需要掌握哪些技巧
目前,随着服务器的种类越来越多,可以说在收费标准上是不一样的。但是为了安装起来之后,让网络运行的效率更高一点,那么在选择的时候还需要掌握一些技巧,为的就是找到更加合适的一种。接下来,由小编来为你介绍需要掌握哪些技巧呢?
用户8743567
2021/06/18
6380
InnoDB中的INT怎么存储的
如果我们查看show egnine innodb查看锁记录的时候往往会看到Innodb的数字使用类似 80000001的形式显示如下:
老叶茶馆
2020/07/10
9590
技术分享 | MySQL 存储过程中的只读语句超时怎么办?
MySQL 有一个参数叫 max_execution_time ,用来设置只读语句执行的超时时间,但是仅对单独执行的 select 语句有效;对于非单独执行的 select 语句,比如包含在存储过程、触发器等内置事务块里则不生效。官方手册上对这个参数解释如下:
爱可生开源社区
2022/08/24
1.4K0
在SQL存储过程中给条件变量加上单引号
在SQL存储过程中给条件变量加上单引号,不加语句就会出问题,以下就是在存储过程中将条件where设置成了动态变化的,给where赋完值再和前面的语句拼接,再execute(SQL)
全栈程序员站长
2022/07/15
2.5K0
技术分享 | MySQL 存储过程中的只读语句超时怎么办?
资深数据库专家,专研 MySQL 十余年。擅长 MySQL、PostgreSQL、MongoDB 等开源数据库相关的备份恢复、SQL 调优、监控运维、高可用架构设计等。目前任职于爱可生,为各大运营商及银行金融企业提供 MySQL 相关技术支持、MySQL 相关课程培训等工作。
爱可生开源社区
2022/09/26
1.4K0
Mariadb/MySQL存储过程中的3
在MySQL存储过程的语句中有三个标准的循环方式:WHILE循环,LOOP循环以及REPEAT循环。还有一种非标准的循环方式:GOTO,不过这种循环方式最好别用,很容易引起程序的混乱,在这里就不错具体介绍了。
py3study
2020/01/14
9790
ora-01007变量不在选择列表中_oracle存储过程变量赋值
使用oracle数据库过程中,偶尔遇到 ORA-01008: 并非所有变量都已绑定 这个错误,此时应该查检sql中是否有以下情况:
全栈程序员站长
2022/10/04
1.5K0
Kubernetes 临时存储需要限制吗?
Node节点通常还可以具有本地的临时性存储,由本地挂载的可写入设备或者 RAM来提供支持。临时(Ephemeral) 意味着对所存储的数据不提供长期可用性的保证。
YP小站
2020/09/14
5.7K0
Oracle存储过程中使用 字符串变量
在Oracle存储过程中,可以使用单引号或双引号来包裹字符串常量或文本。如果要在存储过程中使用引号来包裹变量,则需要考虑以下几点:
破晓之翼
2023/05/01
8910
用SQL语句获得一个存储过程返回的表
定义一个存储过程如下: create proc [dbo].[test1] @id int as select 1 as id,'abc' as name union all  select @id as id,'zzz' as name 返回两行数据. 现在想用SQL语句来调用这个存储过程,并把他返回的表放入变量中.可以如下做: declare   @table   table(id   int,name varchar(50))--定义表变量来存放存储过程返回的内容 insert  into @
深蓝studyzy
2022/06/15
1.2K0
(转)mysql数据库中存储数字字段时,选择int和varchar的区别
从字段类型的执行效率上,int最高,varchar最低。 状态类型字段,使用char或者varchar是不可取的,int类型更容易建立索引和进行检索,毕竟数字类型是数据库检索的基础,char类型的毕竟需要经过转换,而varchar就更复杂了,其排序不仅需要转换和计算,还需要访问和遵循数据库的排序规则(实际上char也需要排序规则),而消耗的资源也更大。 因此,通常在数据库设计中,都是尽量使用int类型字段而不是字符类型字段,这在大型和超大型数据库的优化中,有明显的性能差异。
Dar_Alpha
2018/09/03
3.5K0
inputstream类型的变量需要关闭吗_input type
inputStream的作用是用来表示那些从不同数据源产生输入的类。这些数据源包括
全栈程序员站长
2022/11/08
5370
C#调用SQL中的存储过程中有output参数,存储过程执行过程中返回信息
C#调用SQL中的存储过程中有output参数,类型是字符型的时候一定要指定参数的长度。不然获取到的结果总是只有第一字符。本人就是由于这个原因,折腾了很久。在此记录一下,供大家以后参考! 例如: CREATE PROCEDURE sp_AccountRole_Create @CategoryID int, @RoleName nvarchar(10), @Description nvarchar(50), @RoleID int output AS DECLARE @Count int -- 查找是否有相同
欢醉
2018/01/22
3.2K0
MySql中int(10)与int(11)有什么区别吗?
依稀还记得有次面试,有面试官问我int(10)与int(11)有什么区别,当时觉得就是长度的区别吧!面试官最后也没有给反馈,我也就以为自己答对了。直到有一次有个同学又跟我谈起这个事,才去查了以下,发现事情并没有哪么简单... ...
周三不加班
2019/09/03
4.4K0
MySql中int(10)与int(11)有什么区别吗?
[pr]变速中的“时间插值”选择
【剪辑中那些关于变速的技巧!】https://zhuanlan.zhihu.com/p/40174821 【视频变速的时间插值方式核心原理,你懂吗?】https://zhuanlan.zhihu.com/p/67327108 【更改剪辑的持续时间和速度】https://helpx.adobe.com/cn/premiere-pro/using/duration-speed.html#main-pars_heading_11
杨肆月
2020/09/10
4K0
你知道 int(1) 和 int(10) 的区别吗?
昨天在群里(点击加群)看到有小伙伴分享了这篇文章,觉得挺不错的。顺手转载一下,一起涨知识! 困惑 最近遇到个问题,有个表的要加个user_id字段,user_id字段可能很大,于是我提mysql工单alter table xxx ADD user_id int(1)。 领导看到我的sql工单,于是说:这int(1)怕是不够用吧,接下来是一通解释。 其实这不是我第一次遇到这样的问题了,其中不乏有工作5年以上的老司机。包括我经常在也看到同事也一直使用int(10),感觉用了int(1),字段的上限就被限制,真实
程序猿DD
2022/03/15
5020
【问答】MySQL存储过程中的 ?? 和 // 是什么?
在平时工作中,有时我们会编写存储过程。在存储过程中我们会在网上看到一些例子,在例子中会有类似 DELIMITER ?? 或者 DELIMITER // 这种写法,这种写法看上去就比较迷惑,并且网上的介
用户1260737
2021/03/05
2.5K0
【问答】MySQL存储过程中的 ?? 和 // 是什么?
存储过程中调用EXECUTE IMMEDIATE的“权限不足”
EXECUTE IMMEDIATE是Oracle中使用动态SQL的一种方法,可以直接执行,也可以在存储过程中调用。然而在存储过程中调用可能会遇到权限不足的问题,如在存储过程中执行重建索引语句:
一笠风雨任生平
2019/08/02
2.6K0

相似问题

我真的需要这个存储过程中的参数吗?

20

我可以在存储过程中运行group语句并以变量的形式返回输出吗?

12

需要在存储过程中获得子项列表

22

你能在布尔变量中存储/转换int值吗?

20

在从Java类调用的Oracle存储过程中是否需要提交?

146
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文