songburong 发表于 2010-9-16 17:59:07

存储过程与参数的问题

本人新建的存储过程,
create procedure so_momo
@csocode nchar(20) ,
@cinvcode nchar(20)
as
SELECTDISTINCT
               SO_SODetails.cSOCode AS 销售订单号, SO_SODetails.cInvCode AS 存货编码,
      so_somain.ccusname as 客户 ,SO_SODetails.iQuantity AS 销售订单数量,
               mom_order.MoCode AS 生产订单号, mom_orderdetail.Qty AS 生产数量, mom_morder.DueDate AS 生产完工日期
FROM    SO_SODetails INNER JOIN
               SO_SOMain ON SO_SODetails.ID = SO_SOMain.ID LEFT OUTER JOIN
               mom_morder INNER JOIN
               mom_orderdetail ON mom_morder.MoDId = mom_orderdetail.MoDId INNER JOIN
               mom_order ON mom_orderdetail.MoId = mom_order.MoId ON SO_SODetails.cSOCode = mom_orderdetail.OrderCode AND
               SO_SODetails.iRowNo = mom_orderdetail.OrderSeq
where so_sodetails.csocode = @csocode and so_sodetails.cinvcode = @cinvcode
ORDER BY 销售订单号
go

我想,如果我不带参数查询
exec so_momo 可以查出所有的行
如果带参数查询
exec so_momo '011005003', 'cbswi-jca0089a' 也就只可以查到指定的这一行

现在这个存储过程达不到这个效果,只能查带参数的,查不到所有,

lrm521 发表于 2014-6-4 11:09:53

:o,初学者,根本看不明白,学习几天在回来看吧

mxbing1984 发表于 2014-6-11 09:03:30

回帖,拿分{:soso_e127:}

lls41624 发表于 2014-6-13 08:14:14

同意6楼,学习中

songburong 发表于 2010-9-16 22:06:28

回复 1# songburong


    怎么没有人顶哈,

yuzhiwen 发表于 2010-9-18 17:15:26

学习中,顶一下1

yuzhiwen 发表于 2010-9-18 17:19:41

感觉就是有问题。
1、不带参数时, @csocode@cinvcode为空的话,这个条件就没有办法成立了。
2、另外带参的存储过程,是不是应该设置个默认值啊?

lfg111 发表于 2010-9-30 10:04:02

create procedure so_momo
@csocode nchar(20)= '' ,
@cinvcode nchar(20)= 'ZZZZZZ'
as

lspfjm 发表于 2010-9-30 17:19:55

可以设置判断条件,so_sodetails.csocode = @csocode and so_sodetails.cinvcode = @cinvcode
declare @条件1 varchar(60)
declare @条件2 varchar(60)
if @csocode =‘’
select@条件1 = ‘and so_sodetails.csocode =‘ @csocode
else
select@条件1 = ’‘
同样设置条件2 然后where条件改为 where 1=1 +@条件1 + @条件2

lspfjm 发表于 2010-9-30 17:22:07

要是用UAP做报表的话,就可以设置@filterstring nvarchar(1000) =N'',然后在UAP设置相关条件即可

naojin 发表于 2010-10-13 09:39:39

sqlserver的存储过程参数可以有默认值的,
可以设为空(不是null)

mojianhong 发表于 2011-2-13 14:09:06

本人支持6楼那样做,这个问题不复杂,容易实现!

dudw 发表于 2011-3-10 11:33:42

6楼

minx 发表于 2011-3-12 21:52:33

有点复杂

zcufida 发表于 2011-3-12 22:08:38

http://www.zcufida.com

dahai 发表于 2011-3-14 17:19:58

学习了!!!!!

wjhawxr123 发表于 2011-3-22 10:55:36

if @csocode = '' set@csocode = '%'      
else      
set @csocode = @csocode + '%'
页: [1] 2
查看完整版本: 存储过程与参数的问题