zoukankan      html  css  js  c++  java
  • 存储过程多值参数报表

    在使用Wyn Enterprise存储过程返回结果作为报表数据集时,经常会用到多个参数值的场景。
    例如,需要用存储过程从销售明细表中,根据销售大区和支付方式返回查询结果。
    其中:销售大区和支付方式也均为多值参数。

    此种场景的核心是对参数中in值的处理。
    1.首先查看数据结构;


    2.在数据库中定义处理参数值的函数和存储过程;
    由于参数值的为:'西北,华北',需要用自定义函数处理成 '西北','华北';
    自定义参数脚本:
    create  function   [dbo].[f_split](@c   varchar(2000),@split   varchar(2))   
    returns   @t   table(col   varchar(20))   
    as   
        begin     
          while(charindex(@split,@c)<>0)   
            begin   
              insert   @t(col)   values   (substring(@c,1,charindex(@split,@c)-1))   
              set   @c   =   stuff(@c,1,charindex(@split,@c),'')   
            end   
          insert   @t(col)   values   (@c)   
          return   
        end

    存储过程脚本:
    create proc [dbo].[sp_qry_sales]
    (
    @area nvarchar(255)
    ,@province nvarchar(255)
    )
    as
    select * from Demo_销售明细
    where 1=1
    and 销售大区 in (select * from f_split(@area,',') )
    and 支付方式 in (select * from f_split(@province,',') )

    3.创建报表,在报表中创建内嵌数据集和参数;
      3.1新建两个数据集分别获取销售大区和支付方式,作为参数可选值;
       
    销售大区:select distinct 销售大区 from Demo_销售明细
    支付方式:select distinct 支付方式 from Demo_销售明细

    3.2 添加报表参数,并将上一步的数据集结果分别做为报表参数的可选值。
               

      3.3调用存储过程,编写返回数据的数据集。
      调用存储过程:exec sp_qry_sales @p1, @p2  其中:两个参数的参数值需使用Join函数用逗号进行数组拼接,=Join(Parameters!多值参数1.Value,",")
       

    4.预览查看报表。

  • 相关阅读:
    SCRIPT TO GENERATE SQL*LOADER CONTROL FILE
    Setting an Oracle event:The structure of the trace syntax
    Script to Collect RAC Diagnostic Information (racdiag.sql)
    Data Block Cache Header Format Changes (Oracle8 Physical layout)
    Function Based Indexes and Global Temporary Tables
    EVENT: 10231 "skip corrupted blocks on _table_scans_"
    Materialized Views and Dimensions
    Script: Computing Table Size
    DBMS_REPAIR example
    Sql2005+:ssms 的【临时】服务器连接配置文件:
  • 原文地址:https://www.cnblogs.com/edoo/p/13919470.html
Copyright © 2011-2022 走看看