sql server 获取动态sql输出结果
不带输出结果 我们一般会这样写
例子:一个输出6位递增号码结果
ALTER proc GetCode
@tb varchar(50),
@tag varchar(50)
as
declare @sqlstring nvarchar(max)
set @sqlstring='
SELECT '''+@tag+'''+RIGHT(1000001+ISNULL(RIGHT(MAX(FCode),6),0),6) FROM '+@tb --print @sqlstring
exec (@sqlstring) GO
但是如果存储过程需要和其他过程继续运算,我需要把结果放到一个变量,这个时候 就需SQL内置 存储过程写法
先看看语法:
sp_executesql [ @stmt = ] stmt [ {, [@params=] N'@parameter_name data_type [ [ OUT [ PUT ][,...n]' } {, [ @param1 = ] 'value1' [ ,...n ] } ]
然后我们来改造
(用法解释 : 我们需要把结果放入@temp, 然后 在 sp_executesql 中声名 @temp的类型 后面把output的变量放后面 , 这样 temp 的值就会赋给 outvalue 里面了)
例子:
CREATE procedure GetCodeByOut
@tb varchar(50),
@tag varchar(50),
@outvalue varchar(50) output
as
declare
@sqls nvarchar(4000)
set @sqls='SELECT @temp= '''+@tag+'''+RIGHT(1000001+ISNULL(RIGHT(MAX(FCode),6),0),6) from '+@tb
exec sp_executesql @sqls,N'@temp varchar(50) output',@outvalue output
调用
declare @userName varchar(50)
exec GetCodeByOut 'T_Car','HB',@userName output
select @userName
如果有多个输出参数 同理依次声名即可
declare @num int, @sqls nvarchar(4000) ,@sname char(10)
set @sqls='select @a=sno,@b=sname from aa '
exec sp_executesql @sqls,N'@a int output,@b char(10) output',@num output,@sname output
select @num
select @sname
参考文章:
https://blog.csdn.net/lin00kun11/article/details/50535643
sql server 获取动态sql输出结果的更多相关文章
- SQL SERVER 执行动态SQL EXEC
:普通SQL语句可以用Exec执行 eg: Select * from tableName Exec('select * from tableName') Exec sp_executesql N's ...
- SQL Server 2012 - 动态SQL查询
动态SQL的两种执行方式:EXEC @sql 和 EXEC sys.sp_executesql @sql DECLARE @c_ids VARCHAR(200) SET @c_ids ='1,2' - ...
- sql server2008 获取动态sql的变量值
--通过SQL 字符串 查询 获取查出的值sp_executesql declare @QuerySql nvarchar(500),@uid int,@Ucode varchar(100);set ...
- SQL Server获取下一个编码字符串的实现方案分割和进位
我在前一种解决方案SQL Server获取下一个编码字符实现和后一种解决方案SQL Server获取下一个编码字符实现继续重构与增强两篇博文中均提供了一种解决编码的方案,考虑良久对比以上两种方 ...
- SQL Server获取下一个编码字符实现继续重构与增强
我在SQL Server获取下一个编码字符实现的博文中,虽然实现了这个问题,但是感觉维护起来比较麻烦,例如如果调整编码字符串的固定长度,就需要变更三个函数,这样的为何成本确实比较大.面向对象编 ...
- SQL SERVER获取数据库文件信息
MS SQL SERVER 获取当前数据库文件等信息,适用于多个版本: SELECT dbf.file_id AS FileID , dbf.name AS [FileName] , s.fi ...
- 获取动态SQL查询语句返回值(sp_executesql)
在写存储过程时经常会遇到需要拼接SQL语句的情况,一般情况下仅仅是为了执行拼接后的语句使用exec(@sql)即可. 而今天的一个存储过程却需要获取动态SQL的查询结果. 需求描述:在某表中根据Id值 ...
- ORACLE中使用DBMS_SQL获取动态SQL执行结果中的列名和值
1.获取动态SQL中的列名及类型 DECLARE l_curid INTEGER; l_cnt NUMBER; l_desctab dbms_sql.desc_tab; l_sqltext ); BE ...
- SQL Server获取指定行的数据
SQL Server获取指定行(如第二行)的数据 --SQL Server获取指定行(如第二行)的数据-- --法一(对象法)-- select * from ( select * , numbe ...
随机推荐
- python-线程的暂停, 恢复, 退出
我们都知道python中可以是threading模块实现多线程, 但是模块并没有提供暂停, 恢复和停止线程的方法, 一旦线程对象调用start方法后, 只能等到对应的方法函数运行完毕. 也就是说一旦s ...
- BZOJ.3425.[POI2013]Polarization(DP 多重背包 二进制优化)
BZOJ 洛谷 最小可到达点对数自然是把一条路径上的边不断反向,也就是黑白染色后都由黑点指向白点.这样答案就是\(n-1\). 最大可到达点对数,容易想到找一个点\(a\),然后将其子树分为两部分\( ...
- ab,qps 并发连接数
并发连接数 = pv / 统计时间 * 页面衍生连接次数 * http响应时间 * 因数 / 其他web服务器 数量 pv = 并发连接数 * 统计时间 * 其他web服务器 数量/ 页面衍生连接次数 ...
- 认证登录装饰器与form组件的使用
def auth(func): '''制作登录认证的装饰器''' def inner(request,*args,**kwargs): user_info=request.session.get(se ...
- Bracket 使用指南
Brackets 是一个免费.开源且跨平台的 HTML/CSS/JavaScript 前端 WEB 集成开发环境 (IDE工具).该项目由Adobe 创建和维护,根据MIT许可证发布,支持 Windo ...
- web前端不可错过的开发工具–Adobe Brackets
Adobe Brackets是一个开源的基于HTML/CSS/JavaScript开发,运行在native shell上的集成开发环境.该项目由Adobe创建和维护,根据MIT许可证发布.提供Wind ...
- 为何IT开发人员如此辛苦?
一个本来挺简单的功能,硬是让PM(产品经理)设计的非常复杂,各种逻辑切换.这样不但用户体验不好,还容易出各种bug.为了让用户学会使用产品,用了各种引导图,什么手势引导,按钮点击引导,提示弹窗都用上了 ...
- Cocos Creator 的Hello World
1,创建项目[参考来源:官方文档] 在 Dashboard 中,打开 新建项目 选项卡,选中 Hello World 项目模板. 然后在项目路径栏中指定一个新项目存放路径,路径的最后一部分就是项目文件 ...
- 在global.asax中启动定时任务
public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { Area ...
- centos7下安装gcc7
之前写过在linux下升级gcc 4.8至gcc 4.9的过程,现在gcc最新的版本是8,有些软件必须是gcc 7或者以上的版本才可以编译,比如clickhouse,gcc 7的安装过程和之前基本上一 ...