在论坛中出现的比较难的sql问题:14(存储过程问题 存储过程参数、存储过程内的参数)
原文:在论坛中出现的比较难的sql问题:14(存储过程问题 存储过程参数、存储过程内的参数)
所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路。
1、SQL 数据库中的存储过程的参数问题
http://bbs.csdn.net/topics/390640511?page=1#post-396062228
怎么将SQL数据库中的存储过程中的参数既作为输出变量又作为输出变量?
-
--drop proc proc_test
-
--go
-
-
-
create proc dbo.proc_test
-
@in int,
-
@out int out,
-
@in_out int output
-
as
-
-
select @out = @in + @in_out, --1 + 2 = 3
-
@in_out = @out + 1 --3 + 1 = 4
-
go
-
-
-
declare @in_p int
-
declare @out_p int
-
declare @in_out_p int
-
-
set @in_p = 1;
-
set @in_out_p = 2
-
-
exec dbo.proc_test @in_p,
-
@out_p out,
-
@in_out_p output
-
-
-
select @in_p, --输入参数
-
@out_p, --输出参数
-
@in_out_p --输入,输出参数
-
/*
-
(无列名) (无列名) (无列名)
-
1 3 4
-
*/
2、在存储过程中的参数问题。
-
create table #tableTest(id int identity , name varchar(20),age int,)
-
go
-
insert into #tableTest
-
select '小明',23 union all
-
select '小红',28 union all
-
select '小军',27
-
go
-
select *from #tableTest
-
go
-
-
-
create proc procTest
-
@name varchar(20),
-
@age int,
-
@IDs varchar(30)
-
as
-
begin
-
select *from #tableTest where 1=1
-
end
-
-
--当我传入@name参数等于 小明,23岁,还有ID在(1,3)的时候
-
--我怎么可以弄成可选的参数
-
--比如,name不为空时候
-
select *from #tableTest where 1=1 and name like '小明'
-
--如果name参数为空的时候,IDs参数不为空的时候
-
select *from #tableTest where 1=1 and id in(1,3)
-
--请问一下,就有参数不为空的时候存储过程中的SQL追加条件,为空的时候就不追加,这样带可选参数的存储过程怎么写,以及怎么调用,请帮小弟写一个实例
-
--drop table #tableTest
-
-
create table #tableTest(id int identity , name varchar(20),age int,)
-
go
-
insert into #tableTest
-
select '小明',23 union all
-
select '小红',28 union all
-
select '小军',27
-
go
-
select *from #tableTest
-
go
-
-
create proc procTest
-
@name varchar(20)=null,@age int = null,@IDs varchar(30) = null
-
as
-
-
declare @sql nvarchar(max);
-
set @sql = '';
-
-
set @sql = 'select * from #tableTest where 1 = 1';
-
-
set @sql = @sql +
-
case when @name is not null
-
then ' and name like ' + QUOTENAME(@name +'%','''')
-
when @age is not null
-
then ' and age = ' + cast(@age AS varchar)
-
when @ids Is not null
-
then ' and id in (' + @ids +')'
-
else ' '
-
end
-
-
--打印出语句
-
select @sql as '语句'
-
-
--执行语句
-
--exec(@sql)
-
go
-
-
-
exec procTest
-
/*
-
语句
-
select * from #tableTest where 1 = 1
-
*/
-
-
exec procTest '小明',23
-
/*
-
语句
-
select * from #tableTest where 1 = 1 and name like '小明%'
-
*/
-
-
-
exec procTest @ids = '2,3'
-
/*
-
语句
-
select * from #tableTest where 1 = 1 and id in (2,3)
-
*/
在论坛中出现的比较难的sql问题:14(存储过程问题 存储过程参数、存储过程内的参数)的更多相关文章
- 在论坛中出现的比较难的sql问题:46(日期条件出现的奇怪问题)
原文:在论坛中出现的比较难的sql问题:46(日期条件出现的奇怪问题) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉得有 ...
- 在论坛中出现的比较难的sql问题:45(用户在线登陆时间的小时、分钟计算问题)
原文:在论坛中出现的比较难的sql问题:45(用户在线登陆时间的小时.分钟计算问题) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. ...
- 在论坛中出现的比较难的sql问题:44(触发器专题 明细表插入数据时调用主表对应的数据)
原文:在论坛中出现的比较难的sql问题:44(触发器专题 明细表插入数据时调用主表对应的数据) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决 ...
- 在论坛中出现的比较难的sql问题:42(动态行转列 考勤时间动态列)
原文:在论坛中出现的比较难的sql问题:42(动态行转列 考勤时间动态列) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.
- 在论坛中出现的比较难的sql问题:41(循环替换 循环替换关键字)
原文:在论坛中出现的比较难的sql问题:41(循环替换 循环替换关键字) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.
- 在论坛中出现的比较难的sql问题:40(子查询 销售和历史库存)
原文:在论坛中出现的比较难的sql问题:40(子查询 销售和历史库存) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉得有 ...
- 在论坛中出现的比较难的sql问题:39(动态行转列 动态日期列问题)
原文:在论坛中出现的比较难的sql问题:39(动态行转列 动态日期列问题) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉 ...
- 在论坛中出现的比较难的sql问题:38(字符拆分 字符串检索问题)
原文:在论坛中出现的比较难的sql问题:38(字符拆分 字符串检索问题) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉得 ...
- 在论坛中出现的比较难的sql问题:37(动态行转列 某一行数据转为列名)
原文:在论坛中出现的比较难的sql问题:37(动态行转列 某一行数据转为列名) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.
- 在论坛中出现的比较难的sql问题:36(动态行转列 解析json格式字符串)
原文:在论坛中出现的比较难的sql问题:36(动态行转列 解析json格式字符串) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.
随机推荐
- cv2.warpAffine 参数详解
本文链接:https://blog.csdn.net/qq878594585/article/details/81838260本文为作者原创文章,未经同意严禁转载! opencv中的仿射变换在pyth ...
- Status Code: 431 Request Header Fields Too Large
Status Code: 431 Request Header Fields Too Large
- Kindle支持的文件格式
Kindle支持的文件格式 Kindle个人文档服务Kindle个人文档服务支持以下文件类型:Kindle格式(.MOBI..AZW)--Microsoft Word(.DOC..DOCX)HTML( ...
- (转)Darknet模型与Tensorflow模型相互转换
目前darknet框架下的模型训练都是在C环境下训练的,难免较为晦涩,如果能将模型转换到Tensorflow环境下完成模型的训练,在将训练好的权重转为Darknet可以识别的权重部署到实际应用中.这样 ...
- [原][landcover]全球地表植被样例图片
图由南水之源提供,感谢 流socket 制作总结 原截图如下:按字母顺序排序 asphalt asphalt_bright asphalt_white brightRockOnly broad ...
- ISO/IEC 9899:2011 条款6.5.4——投射操作符
6.5.4 投射操作符 语法 1.cast-expression: unary-expression ( type-name ) cast-expression 约束 2.除非类型名 ...
- 记一次腾讯云MySQL数据库数据回滚
如题,因为操作人员的问题,需要对数据库数据进行回滚. 可以看到,设置了7天自动备份,且是物理冷备. 什么是物理冷备?科普一下: (1)热备:在数据库运行时,直接进行备份,对运行的数据库没有影响.(2) ...
- iframe子页面无法返回上一页的问题
本文讨论的场景是ipad终端. 如题,因业务需要,需要使用iframe嵌套子页面.让外层始终保持一个socket连接,避免socket每跳转一个页面都要重新关闭建立连接的问题.但是这样问题来了,上线后 ...
- Delphi XE6 使用定时器或者线程解决程序界面无响应问题
---恢复内容开始--- 介绍 在手机应用上,我们不应该使用速度慢的代码,当然我们在桌面程序上也应该避免这个,当手机应用长时间没有相应的时候,程序会提示“程序没响应,是否关闭”的提示,这个非常不好,所 ...
- 超文本css样式换行
之前有关于LODOP中纯文本换行的相关博文:Lodop纯文本英文-等符号自动换行问题纯文本的遇到不拆分的单词的时候,可以通过LODOP 语句设置允许标点溢出,且英文单词拆开.超文本需要通过css样式控 ...
