--功能:管理中心查询景点佣金
  --参数:
  --     p_regionCode 为地区代码
  --     p_balanceState为结算状态   
  --     p_receiveAgency为接团旅行社企业代码,可以为"All";  
  --      p_sightCode为景点代码,可以为"All";
  --      p_startTime为结算开始时间;
  --      p_endTime为结算结束时间;  
  Procedure center_Sight_Commission(
                             p_regionCode In varchar2,
                             p_balanceState In Varchar2,                             
                             p_receiveAgency In Varchar2,
                             p_sightCode In Varchar2,
                             p_startTime In Varchar2,
                             p_endTime In Varchar2,
                             cur_sightAccount Out c_Cursor
                             )Is
  Tempstarttime Date;
  Tempendtime   Date;
  Begin
    Tempstarttime := To_Date(p_Starttime, 'YYYY-MM-DD');
    Tempendtime   := To_Date(p_Endtime, 'YYYY-MM-DD') + 1;
    If p_receiveAgency='All' And  p_sightCode='All' And p_balanceState='balance' Then
    Open cur_sightAccount For
      Select e2.enterprise_code As agencyCode,e2.China_Short_Name As agencyShortName,
             e1.enterprise_code As sightCode,
             e1.china_short_name As sightShortName,
             Sum(s2.sightFee) As sightRealFee,Sum(s1.Region_Commission) As RegionCommission,
             Sum(s1.Receive_Agency_Commission) As ReceiveAgencyCommission,Sum(s1.Operate_Fee) As OperateFee,
             Sum(s1.Quality_Promise_Fee) As QualityPromiseFee
      From
        (Select Form_Commission_Account.Form_Code,
             Form_Commission_Account.Enterprise_Code As receiveEnterpriseCode,
             sum(Form_Commission_Account.Region_Commission) As Region_Commission,
             sum(Form_Commission_Account.Receive_Agency_Commission) As                 Receive_Agency_Commission,
             sum(Form_Commission_Account.Operate_Fee) As Operate_Fee,
             sum(Form_Commission_Account.Quality_Promise_Fee) As Quality_Promise_Fee
        From Form_Commission_Account,Form_Balance_Account,enterprise
        Where
              Form_Commission_Account.Form_Code=Form_Balance_Account.Form_Code And
              Form_Commission_Account.Enterprise_Code=enterprise.enterprise_code And
              enterprise.type_flag_code='S' And
              enterprise.region_code=upper(p_regionCode) And
              Form_Balance_Account.Balance_Date Between Tempstarttime And Tempendtime
        Group By  Form_Commission_Account.Form_Code,Form_Commission_Account.Enterprise_Code
              ) s1,
         (Select sight_order.form_code,sight_order.enterprise_code,sum(sight_order.ic_amount) As sightFee
          From sight_order,Form_Balance_Account,enterprise
          Where sight_order.Form_Code=Form_Balance_Account.Form_Code And
                sight_order.enterprise_code=enterprise.enterprise_code And
                enterprise.region_code=upper(p_regionCode) And
                Form_Balance_Account.Balance_Date Between Tempstarttime And Tempendtime
          Group By sight_order.form_code,sight_order.enterprise_code
         ) s2,receive_form,enterprise e1,enterprise e2
      Where  s2.Form_Code=s1.form_code And s2.enterprise_code=s1.receiveEnterpriseCode
            And s2.Form_Code=receive_form.Form_Code
            And s2.enterprise_code=e1.enterprise_code
            And receive_form.enterprise_code=e2.enterprise_code
      Group By e2.China_Short_Name,e2.enterprise_code,e1.enterprise_code,e1.china_short_name
      Order By e2.enterprise_code,e2.China_Short_Name;
Elsif p_receiveAgency='All' And  p_sightCode='All' And p_balanceState='unbalance' Then.........以下省略.
以下是把上述存储过程条件替换的sql语句.

解决方案 »

  1.   

    Select e2.enterprise_code As agencyCode,e2.China_Short_Name As agencyShortName,
                 e1.enterprise_code As sightCode,
                 e1.china_short_name As sightShortName,
                 Sum(s2.sightFee) As sightRealFee,Sum(s1.Region_Commission) As RegionCommission,
                 Sum(s1.Receive_Agency_Commission) As ReceiveAgencyCommission,Sum(s1.Operate_Fee) As OperateFee,
                 Sum(s1.Quality_Promise_Fee) As QualityPromiseFee
          From
            (Select Form_Commission_Account.Form_Code,
                 Form_Commission_Account.Enterprise_Code As receiveEnterpriseCode,
                 sum(Form_Commission_Account.Region_Commission) As Region_Commission,
                 sum(Form_Commission_Account.Receive_Agency_Commission) As Receive_Agency_Commission,
                 sum(Form_Commission_Account.Operate_Fee) As Operate_Fee,
                 sum(Form_Commission_Account.Quality_Promise_Fee) As Quality_Promise_Fee
            From Form_Commission_Account,Form_Balance_Account,enterprise
            Where
                  Form_Commission_Account.Form_Code=Form_Balance_Account.Form_Code And
                  Form_Commission_Account.Enterprise_Code=enterprise.enterprise_code And
                  enterprise.type_flag_code='S' And
                  enterprise.region_code=upper('01') And
                  Form_Balance_Account.Balance_Date Between to_date('2005-11-01','yyyy-mm-dd') And to_date('2005-12-01','yyyy-mm-dd')
            Group By  Form_Commission_Account.Form_Code,Form_Commission_Account.Enterprise_Code
                  ) s1,
             (Select sight_order.form_code,sight_order.enterprise_code,sum(sight_order.ic_amount) As sightFee
              From sight_order,Form_Balance_Account,enterprise
              Where sight_order.Form_Code=Form_Balance_Account.Form_Code And
                    sight_order.enterprise_code=enterprise.enterprise_code And
                    enterprise.region_code=upper('01') And
                    Form_Balance_Account.Balance_Date Between to_date('2005-11-01','yyyy-mm-dd') And to_date('2005-12-01','yyyy-mm-dd')
              Group By sight_order.form_code,sight_order.enterprise_code
             ) s2,receive_form,enterprise e1,enterprise e2
          Where  s2.Form_Code=s1.form_code And s2.enterprise_code=s1.receiveEnterpriseCode
                And s2.Form_Code=receive_form.Form_Code
                And s2.enterprise_code=e1.enterprise_code
                And receive_form.enterprise_code=e2.enterprise_code
          Group By e2.China_Short_Name,e2.enterprise_code,e1.enterprise_code,e1.china_short_name
          Order By e2.enterprise_code,e2.China_Short_Name;为什么存储过程无结果,下面一个sql语句,结果正确,郁闷!!!!!!!!!!!!!!!
      

  2.   

    2条语句真的一样吗?过程里:
        Tempstarttime := To_Date(p_Starttime, 'YYYY-MM-DD'); --2005-11-01
        Tempendtime   := To_Date(p_Endtime, 'YYYY-MM-DD') + 1; -- 这里是11月2号不是12月1号Between Tempstarttime And Tempendtime而sql里:
    Between to_date('2005-11-01','yyyy-mm-dd') And to_date('2005-12-01','yyyy-mm-dd')
      

  3.   

    不好意思,我看错了,SQL一样的话,你看看传递的参数值有什么问题吧,问题应该在这里