找回密码
 注册账号

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

初学者课程:T3自学|T6自学|U8自学软件下载课件下载工具下载资料:通资料|U8资料|NC|培训|年结积分规则 | 使用常见问题Q&A
知识库:U8 | | NC | U9 | OA | 政务U8|U9|NCC|NC65|NC65客开|NCC客开新手必读 | 任务 | 快速增金币用友QQ群[微信群]
查看: 11192|回复: 16

[其他] 存储过程与参数的问题

  [复制链接]
发表于 2010-9-16 17:59:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册账号

×
本人新建的存储过程,
create procedure so_momo
@csocode nchar(20) ,
@cinvcode nchar(20)
as
SELECT  DISTINCT
               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' 也就只可以查到指定的这一行

现在这个存储过程达不到这个效果,只能查带参数的,查不到所有,
发表于 2014-6-4 11:09:53 | 显示全部楼层
,初学者,根本看不明白,学习几天在回来看吧
回复 点赞 拍砖

使用道具 举报

发表于 2014-6-11 09:03:30 | 显示全部楼层
回帖,拿分{:soso_e127:}
回复 点赞 拍砖

使用道具 举报

发表于 2014-6-13 08:14:14 | 显示全部楼层
同意6楼,学习中
回复 点赞 拍砖

使用道具 举报

 楼主| 发表于 2010-9-16 22:06:28 | 显示全部楼层
回复 1# songburong


    怎么没有人顶哈,
发表于 2010-9-18 17:15:26 | 显示全部楼层
学习中,顶一下1
发表于 2010-9-18 17:19:41 | 显示全部楼层
感觉就是有问题。
1、不带参数时, @csocode  @cinvcode  为空的话,这个条件就没有办法成立了。
2、另外带参的存储过程,是不是应该设置个默认值啊?
发表于 2010-9-30 10:04:02 | 显示全部楼层
create procedure so_momo
@csocode nchar(20)  = '' ,
@cinvcode nchar(20)  = 'ZZZZZZ'
as
发表于 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
发表于 2010-9-30 17:22:07 | 显示全部楼层
要是用UAP做报表的话,就可以设置@filterstring nvarchar(1000) =N'',然后在UAP设置相关条件即可
发表于 2010-10-13 09:39:39 | 显示全部楼层
sqlserver的存储过程参数可以有默认值的,
可以设为空(不是null)
发表于 2011-2-13 14:09:06 | 显示全部楼层
本人支持6楼那样做,这个问题不复杂,容易实现!
发表于 2011-3-10 11:33:42 | 显示全部楼层
6楼
发表于 2011-3-12 21:52:33 | 显示全部楼层
有点复杂
发表于 2011-3-12 22:08:38 | 显示全部楼层
发表于 2011-3-14 17:19:58 | 显示全部楼层
学习了!!!!!
发表于 2011-3-22 10:55:36 | 显示全部楼层
if @csocode = '' set  @csocode = '%'      
else      
set @csocode = @csocode + '%'
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|站长微信|Archiver|手机版|小黑屋|用友之家 ( 蜀ICP备07505338号|51072502110008 )

GMT+8, 2024-11-24 00:41 , Processed in 0.088982 second(s), 13 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表