Can i create a function which can take infinite parameter.

Can i make a function which get infinite parameter.
like avg.

Kamran Riaz wrote:
Can i make a function which get infinite parameter.
like avg.I think you'll have trouble finding anything to take infinite parameters cos that would be bigger than the universe itself.
User defined aggregate functions example...
http://asktom.oracle.com/pls/asktom/f?p=100:11:335287534824285::::P11_QUESTION_ID:229614022562
[email protected]> create or replace type StringAggType as object
  2  (
  3     theString varchar2(4000),
  4 
  5     static function
  6          ODCIAggregateInitialize(sctx IN OUT StringAggType )
  7          return number,
  8 
  9     member function
10          ODCIAggregateIterate(self IN OUT StringAggType ,
11                               value IN varchar2 )
12          return number,
13 
14     member function
15          ODCIAggregateTerminate(self IN StringAggType,
16                                 returnValue OUT  varchar2,
17                                 flags IN number)
18          return number,
19 
20     member function
21          ODCIAggregateMerge(self IN OUT StringAggType,
22                             ctx2 IN StringAggType)
23          return number
24  );
25  /
Type created.
[email protected]>
[email protected]> create or replace type body StringAggType
  2  is
  3 
  4  static function ODCIAggregateInitialize(sctx IN OUT StringAggType)
  5  return number
  6  is
  7  begin
  8      sctx := StringAggType( null );
  9      return ODCIConst.Success;
10  end;
11 
12  member function ODCIAggregateIterate(self IN OUT StringAggType,
13                                       value IN varchar2 )
14  return number
15  is
16  begin
17      self.theString := self.theString || ',' || value;
18      return ODCIConst.Success;
19  end;
20 
21  member function ODCIAggregateTerminate(self IN StringAggType,
22                                         returnValue OUT varchar2,
23                                         flags IN number)
24  return number
25  is
26  begin
27      returnValue := rtrim( ltrim( self.theString, ',' ), ',' );
28      return ODCIConst.Success;
29  end;
30 
31  member function ODCIAggregateMerge(self IN OUT StringAggType,
32                                     ctx2 IN StringAggType)
33  return number
34  is
35  begin
36      self.theString := self.theString || ',' || ctx2.theString;
37      return ODCIConst.Success;
38  end;
39 
40 
41  end;
42  /
Type body created.
[email protected]>
[email protected]> CREATE or replace
  2  FUNCTION stringAgg(input varchar2 )
  3  RETURN varchar2
  4  PARALLEL_ENABLE AGGREGATE USING StringAggType;
  5  /
Function created.
[email protected]>
[email protected]> column enames format a30
[email protected]> select deptno, stringAgg(ename) enames
  2    from emp
  3   group by deptno
  4  /
    DEPTNO ENAMES
        10 CLARK,KING,MILLER
        20 SMITH,FORD,ADAMS,SCOTT,JONES
        30 ALLEN,BLAKE,MARTIN,TURNER,JAME
           S,WARD
[email protected]>

Similar Messages

  • Using Final Cut Pro, can we create a subtitle which can be used in other applications?

    Can a subtitle file be created using FCP and later use in other application?

    Ian R. Brown wrote:
    You can create a title and export it as a video file to be used in any editing app but you won't be able to alter the words or layout once it has been exported.
    Export as ProRes 4444 if the title has alpha channel otherwise you'll lose the transparency.
    Andy

  • How to create a material which can be used in T-Codes VAO1 & MB1C create

    Hello Experts,
    How can I create a material which can be used to create a sales order and can be used to create inventory using VAO1 and MB1C T-Codes respectively.
    What are the configurations that I need to take care of, while creating it?
    I need to create a material which can be used in the whole sales cycle(sales order,goods issue,billing and etc).
    Please Help,
    Thanks in Advance,
    Suma

    Hi
    Thanks for your fast replies.. I have created a new material and was able to create inventory thru MB1C. But I was not able to generate a goods delivery(VL01N) and billing document(VF01)  for the sales order.
    Error: No schedule lines due for delivery up to the selected date
    Message no. VL248
    Diagnosis
    There are no schedule lines due for the given order item up to the date chosen.
    System Response
    The system does not create a delivery item for this order item.
    Procedure
    Check whether the order item to be delivered contains confirmed schedule lines.
    If this is the case, set the selection date further into the future if you still want to create a delivery for this item.
    Please suggest,
    Tanks,
    Suma
    Edited by: Suma B on Sep 23, 2008 3:55 PM

  • How to create a structure which can hold a dynamic table as a field in DDIC

    Hi ,
           I am designing a solution for a problem and have a unique requirement.  I need to create a structure which can hold a field where dynamic table data can be stored.  Let me illustrate with an example :
    My structure  ( say  Z_output_struc ) will have the fields
    Table_name  Table_Data
    My function module will have a table type of the above structure, so in effect ,my output can have multiple table names and related to each of them, there will be table data of that table name. The issue is how do I configure this in DDIC ?
    I tried creating table_data as "Type ref to Data"  but was stuck  inside the func module when I tried to transfer data to this.
    Any pointers as to how to think about this differently ? 
    Best Regards,
    Girish

    Hi Girish,
    you start directly from the ref to data. You assign it to a field symbol and cast this to the type of the destination of your select. So you can directly add the reference to the cache:
    I hope this example helps a bit (I took a form instead of a function module as it is easier to add here and used an hr table as kna1 is empty on my test system):
    REPORT  z_rwe_99_dyn_tab_cache.
    * type definition
    TYPES:
      BEGIN OF _s_cache,
        table TYPE        tabname16,
        cache TYPE REF TO data,
      END   OF _s_cache,
      _t_cache TYPE STANDARD TABLE OF _s_cache.
    * data declaration
    DATA:
      lv_table     TYPE tabname16,
      lv_condition TYPE string,
      lt_cache     TYPE _t_cache.
    * define table and condition
    lv_table     = 'HRP1000'.
    lv_condition = 'plvar = ''01'' and otype = ''S'' and objid = ''50000016'''.
    * get the result of a single table into the cache
    PERFORM get_dyn_table USING
                            lv_table
                            lv_condition
                          CHANGING
                            lt_cache.
    * form to read a single table
    FORM get_dyn_table USING
                         iv_table     TYPE tabname16
                         iv_condition TYPE string
                       CHANGING
                         ct_cache     TYPE _t_cache.
      FIELD-SYMBOLS:
        <lt_table> TYPE ANY TABLE.
      DATA:
        ls_cache TYPE        _s_cache,
        lr_data  TYPE REF TO data.
      CREATE DATA lr_data TYPE STANDARD TABLE OF (iv_table).
      ASSIGN lr_data->* TO <lt_table>.
      SELECT * FROM (iv_table) INTO TABLE <lt_table>
        WHERE
          (iv_condition).
      ls_cache-table = lv_table.
      ls_cache-cache = lr_data.
      APPEND ls_cache TO ct_cache.
    ENDFORM.                    "get_dyn_table
    If you have more questions just give another post.
    Best Regards
    Roman

  • Can't create a function in SQL windows of PL/SQL Developer.

    The function is :
    create or replace function Xgyh
    (pvc2Czy in varchar2,
    pnumYhid in number,
    pvc2Lfid in varchar2,
    pvc2Grzid in varchar2,
    pvc2Zbmid in varchar2,
    pvc2Bmid in varchar2)
    return number is
    intZxbz integer:=1;--返回值(1:正确,0:错误);
    numDxlb number;
    numGx number;
    begin
    --判断指定用户是否合法
    if pvc2Czy is null then
    intZxbz:=0;
    end if;
    if pnumYhid is not null then
    if pvc2Lfid+pvc2Grzid+pvc2Zbmid+pvc2Bmid is null then
    intZxbz:=0;
    end if;
    elsif pvc2Lfid is not null then
    if pvc2Grzid+pvc2Zbmid+pvc2Bmid is null then
    intZxbz:=0;
    end if;
    elsif pvc2Grzid is not null then
    if pvc2Zbmid+pvc2Bmid is null then
    intZxbz:=0;
    end if;
    elsif pvc2Zbmid is not null then
    if pvc2Bmid is null then
    intZxbz:=0;
    end if;
    elsif pvc2Bmid is null then
    intZxbz:=0;
    end if;
    --取当前登陆操作员在数据权限表中权限并判断是否允许更新当前用户
    if intZxbz=1 then
    select t.更新,
    decode(t.对象类别,'用户',0,'楼房',1,'供热站',2,'子部门',3,'部门',4,'集团',5)
    into numGx,numDxlb
    from 系统_数据权限_表 t
    where t.用户=pvc2Czy
    and (t.对象类别,t.对象识别码) in
    (('集团',0),('部门',pvc2Bmid),('子部门',pvc2Zbmid),('供热站',pvc2Grzid),('楼房',pvc2Lfid),('用户',pnumYhid))
    and rownum=1
    order by 2,1;
    end if;
    --返回信息
    return(numGx);
    end Xgyh;
    If get rid of the where condition
    'and (t.对象类别,t.对象识别码) in
    (('集团',0),('部门',pvc2Bmid),('子部门',pvc2Zbmid),('供热站',pvc2Grzid),('楼房',pvc2Lfid),('用户',pnumYhid))',
    this function can be created fast.
    Thanks for you help!

    This is duplicated question.
    Can't create a function in database
    William Robertson and I have described some advices for you.
    Is my English poor?
    If you couldn't get theirs (mikerault, William Robertson et al.) and my advices,
    You can ask that on ITPUB (this is Chinese site).
    Here it is. http://www.itpub.net/
    And this site is not only for Oracle.
    I think they can help you in Chinese words.
    PS.
    I learn that
    'Gongrezhan' means the center of supplying heating to building,
    and this center is the characteristic systems in Beijing or more cold district.
    PS.2
    Your script includes simplified Chinese character-set.
    Even if you were not Chinese person,
    we all think you can understand Chinese words.

  • In creating a fillable PDF in XI Pro, can I insert a table which can be tabbed through?

    In creating a fillable PDF in XI Pro, can I insert a table which can be tabbed through?

    You're in luck. Create the first field and then right-click it (in Form Edit mode) and select Create Multiple Copies. You'll be able to specify how many copies of the fields to generate, and at what intervals. The nice thing is that although the properties of the new fields will be identical to the source one, they'll each have a unique name, so you'll get an instant "table" of fields.

  • Certain Numbers templets allow you to drag and drop contacts to populate cell data, how can I create that functionality in my own tables?

    Certain Numbers templets allow you to drag and drop contacts to populate cell data, how can I create that functionality in my own tables?

    If you haven't come across the workarounds thread you may find helpful tips there on this and other ways to work with Numbers 3.
    ronniefromcalifornia discovered how to bring contacts into Numbers 3. As described in this post:
    "Open Contacts
    Select all the cards you want
    Copy
    In Numbers, in a table, select cell A1
    Paste
    Boom. Works great. Even brought in the pictures. Cool."
    So instead of drag and drop, just select in Contacts, copy, and paste into Numbers
    SG

  • Can we create a UICommand which refers to a Dnpage or APC????

    Hi All,
         Can we create a UICommand which refers to a dynpage or AbstractPortalComponent(APC)?? [say, when the user clicks UIcommand .. it should trigger a Dynpage or APC and show the user a UI] .. is this possible ??
    Also, I want to access this UICommand as a MenuItem..
    Please help ..! am eagerly looking forward for any help/idea/suggestion!!!!!!
    have a good day!
    Regards,
    SK.

    Hi,
    Hozy wrote:
    Frank, thanks for helping me out.
    What you are suggesting is that I should recreate the view XVIEW which does union all (as the rows will be unique) of the 50 tables, however performance will be an issue unless I can create a materialized views.
    What I know of materialized views is that it's used for static, pre-computed type of data. A materialized view is pre-computed; that's what makes it faster. The time and effort spent in doing the UNION is shifted from the time when you do the queries to the time when you refresh the materialized view. Whether that is more or less total time depends on how often you query the view, and how often you refresh it. At any rate, the performance when you do the queries will be as good as possible.
    Materialized views ar often used in data wharehouses, where then data may only change once a month, but they are also often used in situations like yours, where the data changes every day, or even more frequently.
    In my case, the data in few of the 50 tables might change once every 24hrs and it all comes at one time. The queries that hit XVIEW should get the latest data. Is there a way I can define a materialized view which will pick up the new data in the base 50 tables?I see; you have some job that runs at, say, 2:00 am every morning, and changes some, or maybe all, of the 50 tables. You might refresh the materialized view at, say, 4:00 am every day, or at some time when you're sure that the changes to the base tables are complete. Any query that uses the materialized view between 2:00 and 4:00 am will get stale data.
    You could, alternatively, make the materilaized view refresh whenever any of the base tables change, but this uses more resources, including your time and effort setting it up.

  • Can i create 23 functions in one proc

    Hi,
    Can I create 23 functions in one proc. In that functions data is manipulating at a time 6000 to 50000 records.
    Eg: 6000 time taking 2 minutes
    Will get any performance issue when I manipulate 20000- 50000 records at a time.
    There's no performance issue.
    Pls suggest me,
    -Thanks,

    Well from Pl/sql perspective you can declare any number of functions within a procedure.
    But Ennisb is right: you should be more cleare in what you try to achieve.
    AQ is really, really fast. So if these 5000, 6000 records are enqueued on a queueu you can create a job that dequeues and processes these a message at a time until the queue is empty. This job you could schedule several times using dbms_job in parallel. Then you'll find that the processing is really fast.
    Regards,
    Martien

  • Can i create aggrecate functions

    hi,
    can we create aggrecate functions like max().
    pl. give me the steps to do it.
    thanks in advance.
    regards,
    kathir

    When u mean create, u mean re-write the
    whole function ? please elaborate

  • Can we create a cursor that can hold records of any table

    DECLARE
         CURSOR cr_tablenames IS
              SELECT tname
              FROM tab;
         v_tablename tab.tname%TYPE;
    BEGIN
         OPEN cr_tablenames;
         LOOP
              FETCH cr_tablenames INTO v_tablename;
              EXIT WHEN cr_tablenames%NOTFOUND;
              DBMS_OUTPUT.PUT_LINE('Table: '||v_tablename);
              -- HERE, I WANT TO PERFORM SELECT * OPERATION ON
              -- EACH TABLE WHOSE NAME COMES INTO v_tablename
              -- AND DISPLAY THE RECORDS
         END LOOP;
    END;
    I want to perform SELECT * operation on each table whose name comes into the variable and display the records. How to achieve it? I am clueless.
    Can this be achieved by something like... using cursors which can be defined dynamically and which can hold records of any table?
    Or, do I need to have some different approach to this problem?
    Edited by: kartins on Nov 5, 2009 11:41 PM

    something like
    SQL> create or replace
      2  function getContent (p_tn in varchar2)
      3     return sys_refcursor
      4  is
      5     retval sys_refcursor;
      6  begin
      7     open retval for
      8       'select * from '||p_tn;
      9     return retval;
    10  end;
    11  /
    Function created.
    SQL>
    SQL> var rc refcursor
    SQL>
    SQL> begin
      2     :rc := getContent ('emp');
      3  end;
      4  /
    PL/SQL procedure successfully completed.
    SQL>
    SQL> print rc
         EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
          7369 SMITH      CLERK           7902 17-DEC-80        900                    20
          7499 ALLEN      SALESMAN        7698 20-FEB-81       1700        300         30
          7521 WARD       SALESMAN        7698 22-FEB-81       1350        500         30
          7566 JONES      MANAGER         7839 02-APR-81       3075                    20
          7654 MARTIN     SALESMAN        7698 28-SEP-81       1350       1400         30
          7698 BLAKE      MANAGER         7839 01-MAY-81       2950                    30
          7782 CLARK      MANAGER         7934 09-JUN-81       2551                    10
          7788 SCOTT      ANALYST         7566 19-APR-87       3100                    20
          7839 KING       PRESIDENT            17-NOV-81       5100                    10
          7844 TURNER     SALESMAN        7698 08-SEP-81       1600          0         30
          7876 ADAMS      CLERK           7788 23-MAY-87       1200                    20
         EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
          7900 JAMES      CLERK           7698 03-DEC-81       1050                    30
          7902 FORD       ANALYST         7566 03-DEC-81       3100                    20
          7934 MILLER     CLERK           7782 23-JAN-82       1400                    10
    14 rows selected.
    SQL>
    SQL> begin
      2     :rc := getContent ('dual');
      3  end;
      4  /
    PL/SQL procedure successfully completed.
    SQL>
    SQL> print rc
    D
    X

  • I am trying to create  a function , which would retun table type.

    Gurus,
    I am trying to create a function which would return a nested table with 3
    columns of a table as a type.
    my query is like
    select col1,col2,col3 from table_1;
    I am kinda newbie in Oracle and have never used collections.
    Can you please guide ?

    >
    I am kinda newbie in Oracle and have never used collections.
    >
    Then you should start with the documentation
    http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/toc.htm
    Chapter 5 is all about Using PL/SQL collections and has examples
    >
    I am trying to create a function which would return a nested table with 3
    columns of a table as a type.
    >
    That isn't enough of a description to know what you are trying to do or how you plan to use the function. The query you provided has no relation to the question you ask.
    Are you asking about pipelined functions? Here is an example of that
    -- type to match emp record
    create or replace type emp_scalar_type as object
      (EMPNO NUMBER(4) ,
       ENAME VARCHAR2(10),
       JOB VARCHAR2(9),
       MGR NUMBER(4),
       HIREDATE DATE,
       SAL NUMBER(7, 2),
       COMM NUMBER(7, 2),
       DEPTNO NUMBER(2)
    -- table of emp records
    create or replace type emp_table_type as table of emp_scalar_type
    -- pipelined function
    create or replace function get_emp( p_deptno in number )
      return emp_table_type
      PIPELINED
      as
       TYPE EmpCurTyp IS REF CURSOR RETURN emp%ROWTYPE;
        emp_cv EmpCurTyp;
        l_rec  emp%rowtype;
      begin
        open emp_cv for select * from emp where deptno = p_deptno;
        loop
          fetch emp_cv into l_rec;
          exit when (emp_cv%notfound);
          pipe row( emp_scalar_type( l_rec.empno, LOWER(l_rec.ename),
              l_rec.job, l_rec.mgr, l_rec.hiredate, l_rec.sal, l_rec.comm, l_rec.deptno ) );
        end loop;
        return;
      end;
    select * from table(get_emp(20))

  • Creating a function which you can execute with a parameter for date range

    Hi Everyone,
    Hope you can help me.
    I have specific data that I am looking at that I require to query from a function. This function will require that I specify a parameter for a specific date which will only list the date criteria f my choosing.
    Here is the data..
    StudentID
    FirstName
    LastName
    ClassName
    ClassStartDate
    ClassEndDate
    GPA
    1
    John      
    Davids    
    Soft Dev  
    11/1/2013 9:00
    11/30/2013 12:00
    3.25
    2
    John      
    Davids    
    Database  
    10/1/2013 9:00
    10/30/2013 12:00
    3.5
    3
    John      
    Davids    
    Web Design
    10/1/2013 9:00
    10/30/2013 12:00
    4
    4
    John      
    Davids    
    Psychology
    10/1/2013 9:00
    10/30/2013 12:00
    3.25
    So here is an example function which will need to be altered. I am hoping someone could help me figure this out. I thought the below may have been correct, but it just errors out.
    SET
    ANSI_NULLSON
    GO
    SET
    QUOTED_IDENTIFIERON
    GO
    -- =============================================
    -- Author: <Author,,Name>
    -- Create date: <Create Date,,>
    -- Description: <Description,,>
    -- =============================================
    CREATE
    FUNCTIONStudentGPATimePeriod
    @startdate
    AS
    BEGIN
    selectFirstName,LastName,ClassName,ClassStartDate,ClassEndDate,GPA
    fromdbo.Students
    whereClassStartDate
    =@startdate
    END
    GO

    Hi Saravana,
    If I would to execute this function, how would the parameter be entered?
    exec dbo.StudentGPATimePeriod
    i think what you need is PROCEDURE, try below
    --For a single date
    Create PROCEDURE StudentGPATimePeriod
    ( @startdate datetime )
    AS
    Begin
    select FirstName,LastName,ClassName,ClassStartDate,ClassEndDate,GPA
    from dbo.Students
    where ClassStartDate >=@startdate and ClassStartDate < dateadd(day,1,@startdate)
    End
    GO
    --for multiple dates
    CREATE PROCEDURE getStudentGPAMultipledate
    ( @startdate datetime,@enddate datetime )
    AS
    BEGIN
    select FirstName,LastName,ClassName,ClassStartDate,ClassEndDate,GPA
    from dbo.Students
    where ClassStartDate >=@startdate and ClassStartDate < dateadd(day,1,@enddate)
    END
    GO
    EXEC StudentGPATimePeriod @startdate='2014-11-12'
    GO
    EXEC getStudentGPAMultipledate @startdate='2014-11-12',@enddate='2014-11-13'

  • How can I create a function of sound volue from time using AudioQueueBufferRef??

    I have a question how can I analyze class AudioQueueBufferRef, for creating a function of sound volue from time?? Here is what I get . there is AudioQueueBufferRef fillBuf = audioQueueBuffer[fillBufferIndex]; volume height is 2000 elements from SInt16* coreAudioBuffer = (SInt16*)fillBuf->mAudioData. so function looks like H(t*i)=coreAudioBuffer[i] where t = 1/sampleRate = 1/22050 but here is a problem. my program gets sound and uses a class AudioStreamer for this. AudioStreamer has 3000 lines when I play music from Free Internet Radio - SHOUTcast Radio - Thousands of Free Online Radio Stations. internet radio - my problem is as follows either I dont know where 85 % of sound information is or I dont know how I can analyze class AudioQueueBufferRef
    Here is the code where I analyze Buffer.
    {@synchronized(self)
    if ([self isFinishing] || stream == 0)
    return;
    inuse[fillBufferIndex] = true; // set in use flag
    buffersUsed++;
    // enqueue buffer
    AudioQueueBufferRef fillBuf = audioQueueBuffer[fillBufferIndex];
    fillBuf->mAudioDataByteSize = bytesFilled;
    // ======>in this place I analyze Buffer
    if (packetsFilled)
    err = AudioQueueEnqueueBuffer(audioQueue, fillBuf, packetsFilled, packetDescs);
    else
    err = AudioQueueEnqueueBuffer(audioQueue, fillBuf, 0, NULL);
    when bitRate = 24 buffer has the following options int size=(fillBuf->mAudioDataByteSize) == 2000 double sampleRate=asbd.mSampleRate == 22050 numberOfChannels = asbd.mChannelsPerFrame == 1 it turns out that duration of play buffer float bufferTime =(size/numberOfChannels)/sampleRate == 0.1 number of buffers per second float numBuffersInOneSeconds == 1,5 duration of play all buffers per one second numBuffersInOneSeconds * time == 0.15 so it is 15 % of all information
    as a result If buffer comes at 0.0 seconds he lasts up to 0.1 seconds.farther in my function there is no volume. second buffer comes in 0.7 seconds and lasts up to 0.8 seconds. but in reality the sound doesnt breaks. Maybe I'm doing something wrong .please tell me.
    just for comparison
    when bitRate = 32 buffer has the following options int size=(fillBuf->mAudioDataByteSize) == 2000 double sampleRate=asbd.mSampleRate == 22050 numberOfChannels = asbd.mChannelsPerFrame == 1 it turns out that duration of play buffer float bufferTime =(size/numberOfChannels)/sampleRate == 0.1 number of buffers per second float numBuffersInOneSeconds == 2 duration of play all buffers per one second numBuffersInOneSeconds * time == 0.2 so it is 20 % of all information
    when bitRate = 32 buffer has the following options int size=(fillBuf->mAudioDataByteSize) == 1660 double sampleRate=asbd.mSampleRate == 44100 numberOfChannels = asbd.mChannelsPerFrame == 2 it turns out that duration of play buffer float bufferTime =(size/numberOfChannels)/sampleRate == 0.02 number of buffers per second float numBuffersInOneSeconds == 10 duration of play all buffers per one second numBuffersInOneSeconds * time == 0.2 so it is 20 % of all information

    You cannot write custom commands for expressions.
    That being said, there are a couple of options:
    Create a subsequence with a single step. Use a parameter of the sequence as "function parameter".
    Create a custom step type including a substep module which implements the function. Add an edit substep to enable the user of the steptype to gracefully change the parameter.
    Store the variable parameter in a local/file global variable and modify the value in each step. This will, at least, keep the "function" the same for every step.
    Norbert

  • Can't create a function into database

    The function is :
    create or replace function Xgyh
    (pvc2Czy in varchar2,
    pnumYhid in number,
    pvc2Lfid in varchar2,
    pvc2Grzid in varchar2,
    pvc2Zbmid in varchar2,
    pvc2Bmid in varchar2)
    return number is
    intZxbz integer:=1;--返回值(1:正确,0:错误);
    numDxlb number;
    numGx number;
    begin
    --判断指定用户是否合法
    if pvc2Czy is null then
    intZxbz:=0;
    end if;
    if pnumYhid is not null then
    if pvc2Lfid+pvc2Grzid+pvc2Zbmid+pvc2Bmid is null then
    intZxbz:=0;
    end if;
    elsif pvc2Lfid is not null then
    if pvc2Grzid+pvc2Zbmid+pvc2Bmid is null then
    intZxbz:=0;
    end if;
    elsif pvc2Grzid is not null then
    if pvc2Zbmid+pvc2Bmid is null then
    intZxbz:=0;
    end if;
    elsif pvc2Zbmid is not null then
    if pvc2Bmid is null then
    intZxbz:=0;
    end if;
    elsif pvc2Bmid is null then
    intZxbz:=0;
    end if;
    --取当前登陆操作员在数据权限表中权限并判断是否允许更新当前用户
    if intZxbz=1 then
    select t.更新,
    decode(t.对象类别,'用户',0,'楼房',1,'供热站',2,'子部门',3,'部门',4,'集团',5)
    into numGx,numDxlb
    from 系统_数据权限_表 t
    where t.用户=pvc2Czy
    and (t.对象类别,t.对象识别码) in
    (('集团',0),('部门',pvc2Bmid),('子部门',pvc2Zbmid),('供热站',pvc2Grzid),('楼房',pvc2Lfid),('用户',pnumYhid))
    and rownum=1
    order by 2,1;
    end if;
    --返回信息
    return(numGx);
    end Xgyh;
    If get rid of the where condition
    'and (t.对象类别,t.对象识别码) in
    (('集团',0),('部门',pvc2Bmid),('子部门',pvc2Zbmid),('供热站',pvc2Grzid),('楼房',pvc2Lfid),('用户',pnumYhid))',
    this function can be created immediately.
    Thanks for you help!

    I read ITPUB, and understand detailed situation a little.
    The problem is not that any error occur on compiling,
    but that compiling slows down with some conditional clause(*1).
    It takes half a day or more(*2) to compile.
    I think that must hung up.
    Really? Is it really happen?
    If that is true, You had better contact Oracle Support.
    (*1)
    The additional condition is like as follows.
    and (t.MB_named_column1,t.MB_named_column2) in
    (('MB_data1',0),('MB_data2',pvc2Bmid),('MB_data3',pvc2Zbmid),('MB_data4',pvc2Grzid),('MB_data5',pvc2Lfid),('MB_data6',pnumYhid))
    Here, MB means MultiBytes.
    (*2)
    'half a day or more' is my literal translation.
    It may mean only 'very long time'.
    Message was edited by:
    ushitaki
    Added the more detailed explanation.

Maybe you are looking for

  • ITunes does not open in Windows 7

    I am running Windows 7 64 bit Professional on a new HP workstation. Have transferred everything, including user accounts, music libraries and iTunes from an older HP PC (motherboard died!). For several days iTunes opened with no problem, but has now

  • Adobe photoshop cc 2014 has stopped working in windows 8

    I am facing problem with the Photoshop 2014 release. It's getting stopped just after the start. Attaching a screenshot for the same. Thanks Bhupendra Singh

  • What kind of graphics cards can I get?

    I have a Compaq Presario CQ50 107NR My graphics card is GeForce 8200M G I need a  better graphics card but I do not know what is compatible with the laptop. Can someone give me a list of upgraded graphics cards I can get? I am wanting to play Diablo

  • XI and BAPI - simple scenario

    Hi, I'm just a beginner with XI. I've got such scenario to develop. Could anyone help me ? 1. After completing production in external system I'm receving LOIPRO.LOIPRO01 message from R/3 system with status I0045. (I mean LOIPRO with status I0045 is b

  • Stock level notification

    Hello, My client wants, a notification message when the stock of a specific material drops to 1000 pcs. I thought to create a report and a customizing table with 3 fields (material quantity message). The report will run in background job and if finds