overloading a DATE with time STAMP function to avoid the "too many declarations.

CREATE OR REPLACE PACKAGE util
AS
  FUNCTION yn (bool IN BOOLEAN)
    RETURN CHAR;

  FUNCTION is_same(a varchar2, b varchar2)
    RETURN BOOLEAN;

  FUNCTION is_same(a date, b date)
    RETURN BOOLEAN;

  /* Oracle's documentation says that you cannot overload subprograms
   * that have the same type family for the arguments.  But, 
   * apparently timestamp and date are in different type families,
   * even though Oracle's documentation says they are in the same one.
   * If we don't create a specific overloaded function for timestamp,
   * and for timestamp with time zone, we get "too many declarations 
   * of is_same match" when we try to call is_same for timestamps.
   */
  FUNCTION is_same(a timestamp, b timestamp)
    RETURN BOOLEAN;

  FUNCTION is_same(a timestamp with time zone, b timestamp with time zone)
    RETURN BOOLEAN;

  /* These two do indeed cause problems, although there are no errors when we compile the package.  Why no errors here? */
  FUNCTION is_same(a integer, b integer) return boolean;

  FUNCTION is_same(a real, b real) return boolean;

END util;
/

CREATE OR REPLACE PACKAGE BODY util
AS
  /********************************************************************************
     NAME: yn
     PURPOSE: pass in a boolean, get back a Y or N
  ********************************************************************************/
  FUNCTION yn (bool IN BOOLEAN)
    RETURN CHAR
  IS
  BEGIN
    IF bool
    THEN
      RETURN 'Y';
    END IF;

    RETURN 'N';
  END yn;

  /********************************************************************************
     NAME: is_same
     PURPOSE: pass in two values, get back a boolean indicating whether they are
              the same.  Two nulls = true with this function.
  ********************************************************************************/
  FUNCTION is_same(a in varchar2, b in varchar2)
    RETURN BOOLEAN
  IS
    bool boolean := false;
  BEGIN
    IF a IS NULL and b IS NULL THEN bool := true;
    -- explicitly set this to false if exactly one arg is null
    ELSIF a is NULL or b IS NULL then bool := false;
    ELSE bool := a = b;
    END IF;
    RETURN bool;
  END is_same;

  FUNCTION is_same(a in date, b in date)
    RETURN BOOLEAN
  IS
    bool boolean := false;
  BEGIN
    IF a IS NULL and b IS NULL THEN bool := true;
    -- explicitly set this to false if exactly one arg is null
    ELSIF a is NULL or b IS NULL then bool := false;
    ELSE bool := a = b;
    END IF;
    RETURN bool;
  END is_same;
  
  FUNCTION is_same(a in timestamp, b in timestamp)
    RETURN BOOLEAN
  IS
    bool boolean := false;
  BEGIN
    IF a IS NULL and b IS NULL THEN bool := true;
    -- explicitly set this to false if exactly one arg is null
    ELSIF a is NULL or b IS NULL then bool := false;
    ELSE bool := a = b;
    END IF;
    RETURN bool;
  END is_same;

  FUNCTION is_same(a in timestamp with time zone, b in timestamp with time zone)
    RETURN BOOLEAN
  IS
    bool boolean := false;
  BEGIN
    IF a IS NULL and b IS NULL THEN bool := true;
    -- explicitly set this to false if exactly one arg is null
    ELSIF a is NULL or b IS NULL then bool := false;
    ELSE bool := a = b;
    END IF;
    RETURN bool;
  END is_same;

  /* Don't bother to fully implement these two, as they'll just cause errors at run time anyway */
  FUNCTION is_same(a integer, b integer) return boolean is begin return false; end;
  FUNCTION is_same(a real, b real) return boolean is begin return false; end;
  
END util;
/

declare
 d1 date := timestamp '2011-02-15 13:14:15';
 d2 date;
 t timestamp := timestamp '2011-02-15 13:14:15';
 t2 timestamp;
 a varchar2(10);
 n real := 1;
 n2 real;
begin
 dbms_output.put_line('dates');
 dbms_output.put_line(util.yn(util.is_same(d2,d2) ));
 dbms_output.put_line(util.yn(util.is_same(d1,d2) ));
 dbms_output.put_line('timestamps'); -- why don't these throw exception?
 dbms_output.put_line(util.yn(util.is_same(t2,t2) ));
 dbms_output.put_line(util.yn(util.is_same(t,t2) ));
 dbms_output.put_line('varchars');
 dbms_output.put_line(util.yn(util.is_same(a,a)));
 dbms_output.put_line(util.yn(util.is_same(a,'a')));
 dbms_output.put_line('numbers');
 -- dbms_output.put_line(util.yn(util.is_same(n,n2))); -- this would throw an exception
end;
/
Originally, I had just the a function with the arguments of VARCHAR2. It worked not correctly because when the dates were gone, the automatic conversion into VARCHAR2 lowered the timestamp. So, I added a 2nd function with the arguments to DATE. Then I started to get "too many declarations of is_same exist" error during the passage of time stamps. This made no sense to me, so, although documentation Oracle says you can't do this, I created a 3rd version of the function, to manage the TIMESTAMPS explicitly. Surprisingly, it works fine. But then I noticed that he did not work with TIMESTAMP with time zones. Therefore, the fourth version of the function. Docs of the Oracle say that if your arguments are of the same family, you can't create an overloaded function, but in the example above shows, it's very bad.

Finally, just for grins, I created the functions of number two, one number, the other with REAL and even these are allowed - they are compiled. But then, at runtime, it fails. I'm really confused.

Here's the apparently erroneous Oracle documentation on this subject: http://docs.oracle.com/cd/B12037_01/appdev.101/b10807/08_subs.htm (see overload subprogram names) and here are the different types and their families: http://docs.oracle.com/cd/E11882_01/appdev.112/e17126/predefined.htm.

Published by: hot water on 9 January 2013 15:38

Published by: hot water on 9 January 2013 15:46

>
So, I added a 2nd function with the arguments to DATE. Then I started to get "too many declarations of is_same exist" error during the passage of time stamps. It makes no sense for me
>
This is because when you pass a TIMESTAMP Oracle cannot determine whether to implicitly convert to VARCHAR2 and use your first function or implicitly convert to DATE and use your second function. Where the "too many declarations" error exist.
>
, even if said Oracle documentation you can not do, so I created a 3rd version of the function to manage the TIMESTAMPS explicitly. Surprisingly, it works fine. But then I noticed that he did not work with TIMESTAMP with time zones.
>
Perhaps due to another error "too many declarations? Because now, there will be THREE possible implicit conversions that might be made.
>
Therefore, the fourth version of the function. Docs of the Oracle say that if your arguments are of the same family, you can't create an overloaded function, but in the example above shows, it's very bad.
>
I think that the documentation, of the family of 'date', is wrong as you suggest. For WHOLE and REAL, the problem is that those are the ANSI data types and are really the same Oracle data type; they are more like "alias" that different data types.

See the doc of SQL language
>
ANSI SQL/DS and DB2 data types

The SQL statements that create tables and clusters allows also ANSI data types and products IBM SQL/DS and DB2 data types. Oracle recognizes the ANSI or IBM data type name that differs from the Oracle database data type name. It converts the data type for the equivalent Oracle data type, stores the Oracle data type under the name of the column data type and stores the data in the column in the data type Oracle based on the conversions listed in the following tables.

INTEGER NUMBER

INT

SMALLINT
NUMBER (38)

FLOAT (Note b)

DOUBLE-PRECISION (Note c)

REAL (Note d)
FLOAT (126)

FLOAT (126)

FLOAT (63)

Tags: Database

Similar Questions

  • PDM Viewer do not display data with time stamp

    Need help with the timestamp of the data in a PDM file generated by the DAQ Assistant.

    When I use the PDM Viewer, with x the value absolute time scale, the date starts in 1903. If I use Excel to look at the file that the start time is correct (i.e. 2013).

    Bo_Xie, I simplified my VI and now able to display the correct time stamp. Thanks for your time!

  • Rough terrain when the data is plotted with time stamp of AM / PM or to the right!

    Hi to all programmers.

    I'm attached Datafile. Can someone tell me how to draw this line! I need all of the data plotted on the right and the x - axis with the date and time stamp.

    I understand that the chart cannot understand that after the time: 12:59:59.999, it's 01:00:00.000 afternoon.

    Thanks to Labview 7.1

    Concerning

    HFZ

    Apart from a code that can be simplified by the use of other functions, what I see, it's that the file you provided does not match the format that expects the VI.

    Other comments:

    • I don't understand why you're going to all the trouble of the evolution of the time string when all what you need to do is:

    • All the way at the beginning, use the function of path of the band to get the file name rather than the gymnastics that you're doing.
    • Your time loop must be indexed for auto-loop.
    • I can't quite understand what you're trying to do with all these sliders.
  • PLS-00307: too many statements - overloaded method w. the date and time stamp

    I ran in an overload situation but can't seem to find out exactly why the following error occurs:
    create or replace package pkg_overload
    as
      procedure overload(p_in in date);
      procedure overload(p_in in timestamp);
    end pkg_overload;
    /
    
    create or replace package body pkg_overload
    as
      procedure overload(p_in in date)
      as
      begin
        dbms_output.put_line('overload > date');
      end overload;
    
      procedure overload(p_in in timestamp)
      as
      begin
        dbms_output.put_line('overload > timestamp');
      end overload;
    end pkg_overload;
    /
    When I run the overloaded methods sysdate and systimestamp, I get an error on the timestamp:
    exec pkg_overload.overload(sysdate);
    
    overload > date
    
    exec pkg_overload.overload(systimestamp);
    
    Error starting at line 27 in command:
    exec pkg_overload.overload(systimestamp)
    Error report:
    ORA-06550: line 1, column 7:
    PLS-00307: too many declarations of 'OVERLOAD' match this call
    ORA-06550: line 1, column 7:
    PL/SQL: Statement ignored
    06550. 00000 -  "line %s, column %s:\n%s"
    *Cause:    Usually a PL/SQL compilation error.
    *Action:
    It seems that Oracle is trying both the implicit conversion of the timestamp to date and no conversion, thus obtaining the error PLS-00307. Can anyone provide more insight in this? Is their still around him (in addition to creating a single method named timestamp procedure)?

    Thank you

    Martin
    -----
    http://www.talkapex.com
    http://www.clarifit.com

    SYSTIMESTAMP is a TIMESTAMP WITH time ZONE SCHEDULE. You must provide a separate overload for the TIMESTAMP WITH time ZONE SCHEDULE (and you'll probably want one for a setting of TIMESTAMP WITH time ZONE SCHEDULE LOCAL as well).

    SQL> ed
    Wrote file afiedt.buf
    
      1  create or replace package pkg_overload
      2  as
      3    procedure overload(p_in in date);
      4    procedure overload(p_in in timestamp);
      5    procedure overload(p_in in timestamp with time zone);
      6    procedure overload(p_in in timestamp with local time zone);
      7* end pkg_overload;
    SQL> /
    
    Package created.
    
    SQL> ed
    Wrote file afiedt.buf
    
      1  create or replace package body pkg_overload
      2  as
      3    procedure overload(p_in in date)
      4    as
      5    begin
      6      dbms_output.put_line('overload > date');
      7    end overload;
      8    procedure overload(p_in in timestamp)
      9    as
     10    begin
     11      dbms_output.put_line('overload > timestamp');
     12    end overload;
     13    procedure overload(p_in in timestamp with time zone)
     14    as
     15    begin
     16      dbms_output.put_line('overload > timestamp with time zone');
     17    end overload;
     18    procedure overload(p_in in timestamp with local time zone)
     19    as
     20    begin
     21      dbms_output.put_line('overload > timestamp with local time zone');
     22    end overload;
     23* end pkg_overload;
     24  /
    
    Package body created.
    
    SQL> set serveroutput on;
    
    SQL> exec pkg_overload.overload( systimestamp );
    overload > timestamp with time zone
    
    PL/SQL procedure successfully completed.
    

    Justin

  • Script Automator for the DATE and TIME stamped record

    Hi all

    I'm not a scripter, but are in need of a DATE and time-STAMPED folder (or file) I would like to put on my desktop and have updated automatically so that I can use this tool to quickly see if a backup external (or internal) is current. probably I could also use it to quickly find out how /old/ a backup is.

    for now, I do this manually if I want to quickly verify that a backup works by creating a "date named folder" on the desktop - such as '-2016 03 26 "."» so I can quickly see if a backup I just ran ran.

    I have a lot of backups (internal, external, off site, etc.) and it would be super useful for me to have.

    I consider the name of the folder to be customizable (potentially) in case I need to change it, but a good default would be "-YEAR MONTH DAY" so that I could see easily when this backup has been but also I name my files in this way so they can appear in chronological order "."

    is anyone able to help me with something like that or suggest another forum for cross-post this?

    Thank you

    Jon

    Hello

    Create the the ""new folder " action, like this:"

    ---------------

    Drag and drop the 'Shell Script' variable in the "name:" field.

    --------------

    Double click on the variable in the "name:" field:

    Copy and paste this text in the field 'Script ':

    date "+%Y %m %d"
    
  • file lvm recorded with time stamp graphic display

    Hello

    I have headaches display my data with correct timestamp. There are so many methods to save the data. Here, I decided to save it in a text delimited as lvm. a screenshot of my vi segment is attached. I want to use this way rather than other methods is the flexibility it offers. I'll be able to add more data to store that I develop the vi. (So I'm storing data of the DAQ assistant and my calculated values.) I've attached a screenshot of the file I also read.

    I would use another vi to open this file and it draw a chart/graph to show a trend of the acquired data. Can someone pls Advisor mid on which is a better way for mi to do?

    Thank you very much!

    POH

    Hi Malou,

    Sorry for the late reply, I was rushing to complete my project, has not been able to answer.

    Yes, I managed to solve it. In any case, I've used this high rate in the acquisition of data wizard is to allow the acquisition of continuous mode & use a software filter instead of filter material. However writes to the folder this way - write string in .lvm, max is 10 samples/s unless I have use tdm (I'll then everything in the newspaper).

    I was not able to display the correct timestamp was due to the fact that I have does not add to the timestamp of the start time for the timestamp in waveform display. I won't be able to go down to my lab, & my machine have no LabVIEW, so what I do is to extract some parts of my report to share.

    For the part that I used to display the graph (can be seen on the attachment), I deleted the 1st column, which is the time stamp (for display of the spreadsheet), but extract the 1st element - convert timestamp DBL it when I start recording in the DAQ vi (written with the header).

    This excerpt (which could be considered as a group of numbers in the file lvm) and converted to the type timestamp and wired for generating waveform block, providing the start time of the wave.

    Then I replace the use of the chart with graphic, graphic is suitable for data acquired and graphic tracing is better for the time of execution of the data display. now it seems to work fine for me, except for the load time may take some time for larger files.

    Thank you for your participation in this thread!

    See you soon!

    POH

  • How can I print my photos displaying the date and time stamp

    I have pictures in a legal context but do not understand how to print them displaying the date and time stamp.  The timbre of the date and time are necessary for me to present my case exactly.  Can someone tell me how to print with these marks.

    Thank you

    The following instructions will prepare photos
    with the EXIF Date/time stamp then you can print
    them.

    FastStone Image Viewer freeware can add
    EXIF Date/time in the face of your photos in a batch.

    (FWIW... it's always a good idea to create a system)
    Restore point before installing software or updates)

    FastStone Image Viewer
    http://www.FastStone.org/FSViewerDetail.htm
    (Windows XP / Vista / 7)

    I suggest that you create a new folder and add
    copies of your photos for experimental purposes.
    If you are unhappy with the result your originals
    will be intact.

    After FastStone is downloaded and installed...
    Open the program and go...

    Tools / open the Batch Conversion / tab Batch convert...

    Check the box... Use of advanced options...

    Advanced Options button / tab text.
    Check the box... Add text...

    (You will need to experiment with the position and the police
    size and color to get the desired result.)
    (the text size will need to be adjusted according to the)
    the size of the photos)

    Open the window drop... "Insert a Variable."
    choose... EXIF Date Time / Date and time...
    (in the white field you should see ($H1)
    Left click... Ok

    On the Batch tab convert... in the left field...
    Left click the square button "select the Source folder.
    Find and select the photos you want to
    Add.

    Left, click on the Add button to move the files to
    the right field.

    Choose an output Format...

    Choose an output folder...

    Click on the button convert...

    It's much easier to do than to explain then
    give it a try before say you "Good Grief... it's too
    a lot of work.

  • DATE and time STAMP

    All,

    I am convert some sql server scripts to the oracle scripts. I met several times the data type DATETIME has been used in sql server scripts.

    http://docs.Oracle.com/CD/E10405_01/doc/AppDev.120/e10379/ss_oracle_compared.htm

    In the link above, I stumbled upon DATETIME (sql server) is equal to the DATE / TIMESTAMP in Oracle (Oracle).

    Which is better to use between the DATE and time STAMP, performance wise. Please give me some suggestions.

    Thank you

    Hello
    Use the DATE where you have the choice.
    I don't know that the DATEs are more effective than the TIMSTAMPs (even if I have no solid evidence). In addition, DATEs require less storage space, and there are more features available to manipulate DATEs. (These functions usually work on the timestamps also, but they start by converting the TIMESTAMP of a DATE).

  • Date and time stamp not updated

    Following my previous posts, the date and time stamp of the files updated don't are not updated in the RoboSource Control, i.e. the column changed in the Explorer RoboSource Control. However, it seems that changes are stored on the server when the topics are archived, as I can right-click a file to source code control that I've changed, choose the command view and see the changes in the HTML code.

    Basically, this means that source code control is not recognizing that the files have changed and that's why when someone is trying to get the last version he thinks he's one because the date and time are the same as the previous version.

    Everyone knows this behavior before or know why the modified column suddenly stopped updating?

    Thank you

    Jonathan

    After a few Google searches of the digging and random, the following article seems to have solved my problem.

    It seems that if you run RoboSource Control on 64-bit computers, there are problems with checking in files.

    http://helpx.adobe.com/robohelp/kb/cant-check-files-robosource-control.html.

  • Strange problem casting between the DATE and time STAMP

    Hello world

    I'm faced with a problem of strange casting between the DATE and time STAMP. Strange, because this happens in SQL-Developer and the Testdatabase, but not when called from inside SQL-Plus, even if all Session settings are set to the top completely equal.

    I work on the Oracle 11 g Enterprise Edition Release 11.2.0.1.0 Windows database and run the following script, taken from SQL-Developer script output:

    < pre >
    create table ts_test)
    time/date stamp,
    stamp_copy timestamp)
    table TS_TEST standing.

    create or replace view vw_test as
    Select cast (date stamp) buffer,
    Cast (stamp_copy as date) stamp_copy
    of ts_test
    view VW_TEST standing.

    insert into ts_test
    Select systimestamp, the double null
    1 eingefugt Zeilen.

    Commit
    festgeschrieben.

    create or replace trigger trg_ts_test_iu
    instead of update on vw_test
    Start
    Update ts_test
    Set stamp_copy =: new.stamp_copy;
    end;
    RELAXATION trg_ts_test_iu kompiliert

    Update vw_test
    Set stamp_copy = stamp
    1 Zeilen written on.

    Select the stamp, stamp_copy, dump (stamp_copy)
    of ts_test
    STAMP STAMP_COPY DUMP (STAMP_COPY)
    -----------------------------------------------------------------------------------------------------------------
    30.05.2012 19:08:49, 218000000 30.05.3192 20:09:50, 000000000 Typ = 180 Len = 7: 131,192,5,30,21,10,51

    Select *.
    of nls_session_parameters
    VALUE OF THE PARAMETER
    ----------------------------------------------------------------------
    NLS_LANGUAGE GERMAN
    NLS_TERRITORY GERMANY
    NLS_CURRENCY €
    NLS_ISO_CURRENCY GERMANY
    NLS_NUMERIC_CHARACTERS.
    NLS_CALENDAR GREGORIAN
    NLS_DATE_FORMAT exact hh24:mi:ss
    NLS_DATE_LANGUAGE GERMAN
    NLS_SORT GERMAN
    NLS_TIME_FORMAT HH24:MI:SSXFF
    NLS_TIMESTAMP_FORMAT JJ. MM YYYY HH24:MI:SSXFF
    NLS_TIME_TZ_FORMAT HH24:MI:SSXFF TZR
    NLS_TIMESTAMP_TZ_FORMAT JJ. MM YYYY HH24:MI:SSXFF TZR
    NLS_DUAL_CURRENCY €
    BINARY NLS_COMP
    NLS_LENGTH_SEMANTICS TANK
    NLS_NCHAR_CONV_EXCP FAKE

    17 Zeilen offiziell

    Rollback
    Rollback abgeschlossen.
    < / pre >

    Look at the strange data that stamp_copy was after the update.

    When run from SQL over, everything is fine. But when I run this code in our application, the same phenomenon occurs. I've even seen a data dating back to the year 11907 (!), giving an exception by selecting from the table.

    Someone at - it an idea on how to work around this bug?

    Best regards

    Jürgen

    Did you check metalink for bugs?

    There are a few listed in this blog, that may be useful for you.

    http://hoopercharles.WordPress.com/2011/02/17/strange-timestamp-behavior/

  • Check out when a last accessed table (select, insert, update) with time stamp. Auditing enabled

    Hello world

    IM pretty new to audit the database. Auditing is enabled in the database. I would like to retrieve the news all of the objects belonged to a certain pattern when it was last accessed (select, insert, update) with time stamp. Is there any script for this? Your time and your reply is greatly appreciated. Thank you.

    Database version: 11.2.0.4

    Enable audit is not quite enough to get the details when the table is updated/inserted/selected.

    You must activate audting on the object level, then you may only be able to see your report of your choice.

    SELECT OBJ_NAME, ACTION_NAME, to_char (timestamp, ' dd/mm/yyyy, hh') of sys.dba_audit_object.

  • How to validate a date with time

    Hi all

    How can I validate date with time?

    Here is my code:

    var tempDate:Date = new Date();

    If (tempDate < 18 September 2012 07:30 ') {}

    doSomething

    }

    Thanks in advance

    A cleaner way is the dateCompare method:

    If (ObjectUtil.dateCompare (date1, date2) > 0) {}

    Date1 > date2

    } else ObjectUtil.dateCompare (date1, date2)<0)>

    date2 > date1

    } else {}

    date2 is date1

    }

  • I have a registration error trying to download a disc. It is said, your operating system Date and time format do not match the expected for PM Fastrack run format.

    Error in saving of the PM FASTrack.
    Impossible to analyze the dayYour operating system Date and time format do not match the expected for PM FASTrack run format. The format should be mm/dd/yyyy hh: mm:. The format is

    It's my complete error message. The time is set in this format on the computer. How should I do?

    Hello Murphy,

    Thanks for posting your question on the Forums of community of Microsoft.
    From the description of the question, I understand this format date and time do not match for PM FASTrack run.
    Let me go ahead and help you with the issue.
     
    You did changes to the computer before the show?
     
    I suggest for the link and follow the steps in the article, and check if this can help:
    Change the display of dates, times, currencies, and measures
     
    Also, check out the support links:
    PM FASTrack support.
     
    I hope this helps. If you have any other queries/issues related to Windows, write us and we will be happy to help you further.
  • Changes of date and time when you go to the line

    On the date and time to start on the computer is fine.

    When I go to the line for a unknown reason date and time moves forward 12 hours. This happens not always as some time it will be presented one, two or three days without change.

    Very frustrating because it affects the majority of the applications where the date and time are referenced.

    I'm missing something in the settings of date and time.

    [Moved from the forum comments]

    Hello

    -What operating system is installed on the computer?

    If you have installed Windows 7, you can run this Microsoft Fixit and check if that helps.

    Difficulty of broken desktop shortcuts and common system maintenance tasks: http://support.microsoft.com/mats/system_maintenance_for_windows/?wa=wsignin1.0

    Additional information.

    Set the clock: http://windows.microsoft.com/en-in/windows7/set-the-clock

    Thank you.

  • retriving records with date and time stamps

    I need to get all records that have been updated between 08:36:06 and 08:36:09 12/15/2009

    I use this application it gives me the numbers on the right (I think) because this condition GURMAIL_CPLN_CODE = 'UGAP', I want something more
    using the stamp date and time with dates
    12/15/2009 08:36:06 AM
    12/15/2009 08:36:07 AM
    12/15/2009 08:36:08 AM
    12/15/2009 08:36:09 AM
    select * from GURMAIL
    where 
    PERMAIL_CPLN_CODE = 'UGAP'
    AND TO_CHAR(PERMAIL_ACTIVITY_DATE,'MM/DD/YYYYHH24:MI:SS AM') >= '12/15/2009 08:36%'
    Thank you

    face-> Office (while exclaiming in despair "¿Dang, now how could I miss that?")

    Yes, Max, you're right, thanks for being there!
    When I never learn never to post a reply, unless I ran the code me first? ;)
    In any case: bed here now, ciao!

Maybe you are looking for