玉祥平台客服-15087858732

标题: SQL学习笔记——关于参数类型的问题 [打印本页]

作者: fteair    时间: 2020-6-14 14:53
标题: SQL学习笔记——关于参数类型的问题
在使用存储过程的时候碰到一个问题:
存储过程有一个int类型的参数,可传0,1,2在存储过程中筛选数据,如果传空值则不做筛选。
然而存储过程处理该参数时会把0当作空值来处理,达不到预期效果。
解决方法 :将int型参数换为varchar型参数则不会有此问题
问题示例:
  1. if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GetUsers]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
  2. drop procedure [dbo].[GetUsers]
  3. GO

  4. create procedure GetUsers   
  5.     @sex int
  6. as
  7. begin   
  8.     declare @sqlStr varchar(1000)
  9.     set @sqlStr = 'select name, sex from users'
  10.     if (@sex <> '')
  11.         set @sqlStr = @sqlStr + ' where sex =' + CONVERT(varchar(10),@sex)
  12.     exec(@sqlStr)
  13. end
复制代码
上面的存储过程是根据参数@sex查找不同性别的用户,sex=0为男性,sex = 1为女性,
但实际上并不符合预期效果,如下图:
将参数@sex改为varchar类型即可。


作者: 张兴康    时间: 2020-6-14 15:11

作者: caixuqad    时间: 2020-6-14 17:18

作者: fteair    时间: 2020-6-15 14:24
张兴康 发表于 2017-8-14 15:11


作者: fteair    时间: 2020-6-15 14:25
caixuqad 发表于 2017-8-14 17:18


作者: caixuqad    时间: 2020-6-15 17:16

作者: 张兴康    时间: 2020-6-16 14:06
fteair 发表于 2017-8-15 14:24


作者: fteair    时间: 2020-6-16 14:45
张兴康 发表于 2017-8-16 14:06


作者: 张兴康    时间: 2020-6-17 14:10
fteair 发表于 2017-8-16 14:45


作者: fteair    时间: 2020-6-17 14:40
张兴康 发表于 2017-8-17 14:10


作者: caixuqad    时间: 2020-6-18 18:12

作者: caixuqad    时间: 2020-6-21 18:14

作者: caixuqad    时间: 2020-6-22 17:21

作者: caixuqad    时间: 2020-6-24 17:43

作者: caixuqad    时间: 2020-6-28 18:08

作者: fteair    时间: 2020-6-29 15:20
caixuqad 发表于 2017-8-28 18:08


作者: caixuqad    时间: 2020-6-29 20:16





欢迎光临 玉祥平台客服-15087858732 (http://bbs.delit.cn/) Powered by Discuz! X3.2