首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

过程参数默认值的有关问题

2012-03-06 
过程参数默认值的问题 CREATEproceduregh_query(@gh1varchar(200) % ,@gh2varchar(200) % )ASsetnocount

过程参数默认值的问题

CREATE   procedure   gh_query(
@gh1   varchar(200)= '% ',@gh2   varchar(200)= '% ')
AS
set   nocount   on


CREATE   TABLE   [dbo].[ghtemp]   (
[ID]   [int]   IDENTITY   (1,   1)   NOT   NULL   ,
[FID]   [int]   NULL   ,
[finterid]   [int]   NOT   NULL   ,
[客户名称   (Client)]   [varchar]   (80)   COLLATE   Chinese_PRC_CI_AS   NULL   ,
[发票号码       (Inv.   No)]   [nvarchar]   (255)   COLLATE   Chinese_PRC_CI_AS   NOT   NULL   ,
[发票日期     (Inv.   Date)]   [datetime]   NULL   ,
[     货物净值         (Net   value)]   [decimal](38,   4)   NULL   ,
[税   额   (VAT)]   [decimal](38,   4)   NULL   ,
[       运         费             (Transport   cost)]   [varchar]   (255)   COLLATE   Chinese_PRC_CI_AS   NULL   ,
[   价税合计         (Total   Amount)]   [decimal](38,   10)   NULL   ,
[应回款日   (Due   date)]   [varchar]   (255)   COLLATE   Chinese_PRC_CI_AS   NULL   ,
[实际回款金额       (Amount   cashed)]   [money]   NULL   ,
[实际回款日期   (Date   of   cash)]   [datetime]   NULL  
)   ON   [PRIMARY]
--GO

insert   ghtemp   (
[FID]     ,
[finterid]   ,
[客户名称   (Client)]   ,
[发票号码       (Inv.   No)]     ,
[发票日期     (Inv.   Date)]     ,
[     货物净值         (Net   value)]     ,
[税   额   (VAT)]   ,
[       运         费             (Transport   cost)]     ,
[   价税合计         (Total   Amount)]   ,
[应回款日   (Due   date)]   ,
[实际回款金额       (Amount   cashed)]   ,
[实际回款日期   (Date   of   cash)]  
)  


select  
D.FID   AS   FID,
A.finterid   AS   finterid,
C.Fname   as   [客户名称   (Client)],
A.Fbillno   as   [发票号码       (Inv.   No)],  
A.Fdate   as   [发票日期     (Inv.   Date)],
Sum(B.FAmount)   AS   [     货物净值         (Net   value)],  
Sum(B.FTaxAmount)   AS   [税   额   (VAT)],
A.FHeadselfi0453   as   [       运         费             (Transport   cost)],
sum(B.FAmountincludetax)   as   [   价税合计         (Total   Amount)],
A.FHeadselfi0464   as   [应回款日   (Due   date)],
D.FcheckamountFor     as   [实际回款金额       (Amount   cashed)]   ,
D.fcheckdate   as   [实际回款日期   (Date   of   cash)]

from  
ICsale   A
JOIN  
ICsaleentry   B
on     A.finterid   =B.finterid  
JOIN  
t_Organization   C
on     A.FcustID   =C.FitemID    
left   join  
t_RP_NewCheckInfo   D
on   A.finterid=D.Fbillid   and   D.ftype=3



  WHERE     c.Fname   LIKE   @gh1   or     A.Fbillno   LIKE   @gh2  
     
GROUP   BY  
A.FInterID,
A.Fbillno,
A.Fdate,
A.FHeadselfi0453,
A.FHeadselfi0464,
C.Fname,
D.FcheckamountFor,
D.fcheckdate,
D.FID


我想要的结果是:调用过程,没有输入gh1,gh2参数值时,可以使用gh1,gh2参数的默认值.我上面的写法运行结果表明没有使用默认值.




[解决办法]
---存储过程没有写错,你把 '% '代入单独运行下面语句,看看结果
select
D.FID AS FID,
A.finterid AS finterid,
C.Fname as [客户名称 (Client)],
A.Fbillno as [发票号码 (Inv. No)],
A.Fdate as [发票日期 (Inv. Date)],
Sum(B.FAmount) AS [ 货物净值 (Net value)],
Sum(B.FTaxAmount) AS [税 额 (VAT)],
A.FHeadselfi0453 as [ 运 费 (Transport cost)],
sum(B.FAmountincludetax) as [ 价税合计 (Total Amount)],
A.FHeadselfi0464 as [应回款日 (Due date)],
D.FcheckamountFor as [实际回款金额 (Amount cashed)] ,
D.fcheckdate as [实际回款日期 (Date of cash)]

from
ICsale A
JOIN
ICsaleentry B
on A.finterid =B.finterid
JOIN
t_Organization C
on A.FcustID =C.FitemID
left join
t_RP_NewCheckInfo D
on A.finterid=D.Fbillid and D.ftype=3

WHERE c.Fname LIKE '% ' or A.Fbillno LIKE '% '

GROUP BY
A.FInterID,
A.Fbillno,
A.Fdate,
A.FHeadselfi0453,
A.FHeadselfi0464,
C.Fname,
D.FcheckamountFor,
D.fcheckdate,
D.FID

热点排行