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 ...
随机推荐
- 进程描述和控制(os 笔记二)
进程描述和控制 计算机最初的主要任务之一就是高效的自动化我们的工作,完成用户交付的任务.而这种任务在计算机中的表示就是一个个的进程.从上一篇文章中描述的计算机的发展历史我们能发现,无论是单道批处理 ...
- Running multiple commands in one line in shell
You are using | (pipe) to direct the output of a command into another command. What you are lookin ...
- Python中应用SQL及SQLAlchemy(一)
以SQLit3为例: import sqlite3 conn = sqlite3.connect('db.sqlite3') #获取游标对象 cur = conn.cursor() #执行一系列SQL ...
- POJ.3710.Christmas Game(博弈论 树上删边游戏 Multi-SG)
题目链接 \(Description\) 给定n棵"树",每棵"树"的节点可能"挂着"一个环,保证没有环相交,且与树只有一个公共点. 两人轮 ...
- Python3正则表示式(3)
正则表示式对象 对象1: 案例1: import re example = 'ShanDong Institute of Business and Technology' pattern = re.c ...
- Django源代码中model字段
to_field='绑定的主键字段(默认为ID)' limit_choices_to = {'过滤的choices字段':choices的ID} related_name = 关联表反向查找自己的名称 ...
- 20172302 《Java软件结构与数据结构》第四周学习总结
2018年学习总结博客总目录:第一周 第二周 第三周 第四周 教材学习内容总结 第六章 列表 1.列表是对象的有序集合,在 List 界面中定义. List 接口表示集合框架中的列表.列表可以具有重复 ...
- Reactor 3 学习笔记(2)
接上篇继续学习各种方法: 4.9.reduce/reduceWith @Test public void reduceTest() { Flux.range(1, 10).reduce((x, y) ...
- 手机号是SIM卡的号呢,还是买手机时就带的
可以用原来的号码!把原来的卡装在新手机里就可以了,你的号码没有改变! 手机的号是由sim卡来决定的! 但是卡上的号码显示的是卡的一些信息! 你不用去理会它! 全文:http://iask.sina.c ...
- Mybatis Dynamic Query 更新
文章目录 1. 简介 2. 准备工作 3. 开始更新 3.1. update 3.2. update Null 4. 结束 5. 关注@我 项目地址:https://github.com/wz2coo ...