CURRVAL and NEXTVAL in PL/SQL - is it only in 11g

DECLARE
seq_value NUMBER;
BEGIN
seq_value := employees_seq.NEXTVAL;
END;
is it works only on 11g.
I have xe 10g and it doesn't work. Error:
PLS-00357: Table,View Or Sequence reference 'EMPLOYEES_SEQ.NEXTVAL' not allowed in this context

Hello,
this is a new feature in 11g, not specific for XE.
In 10 g you can achieve the same result as follows
DECLARE
  seq_value NUMBER;
BEGIN
  SELECT employees_seq.NEXTVAL
    INTO seq_value
    FROM dual;
END;-Udo

Similar Messages

  • Japanese Data Set and Get Problem with SQL

    Hi,
    I am not able to retrieve or set data contain Japanese characters.
    Formerly our set up was running just fine. But on doing installation on a new machine, things have gone all haywire.
    I installed Win NT 4.0 Japnese version and SQL 7.0 and later Win 2000 Server Japanese version with same SQL 7.0, but on both get and set I get SQL Exceptions:
    Query 1:
    SELECT DISTINCT MAKER_CD FROM T_MAKER WHERE MAKER_NAME = '�a�l�v�A���s�i' Exception:
    [Microsoft][ODBC SQL Server Driver][SQL Server]Unclosed quotation mark before the character string '�a�l�v�A��'.
    Query 2:
    Insert into Car (intCarID, nvchCustomerID, nvchCarMaker, nvchCarModel,nvchCarDescription, nvchCarCode, nvchCarColor, tintRegistrationCalendar,tintRegistrationMonth, intRegistrationYear,nvchAnnualMileage, nvchPurpose, intNoOfKms,intAirBag, btEcologicalCar, btAntilockBreakSystem,btAntiskid, btSafetyBody, btAntitheft, btFourWheelDrive,btCarModification, nvchLicensePlateArea, intLicensePlateType,nvchLicensePlateHiragana, tintLicensePlateNumber,nvchCarManufacturingNumber, nvchCarOwner, btCurrentlyInsured)Values( 1, 'NI200205040001','','', '', 'HA11S', '���I����������',2,1, 11 ,'5000', '�����E���W���[',0,2,0,0,0,0,0,0,0,'',0,'null', '0' ,'', '�_�������{�l' , 0)
    Exception:
    [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near the keyword 'null'.
    I do not wish to Prepared Statements. I will need to update all my JDBC calls this way.
    Would be grateful if any solutions to this problem could be provided.
    Tahanks and Regards

    If you are using the JDBC-ODBC bridge, then add the 'charset' property (with the name of the japanese charset as value, or whichever you are using) to the Properties instance you pass on to getConnection().
    Alin.

  • Create a visual web part which get data from excel sheet and import it into sql server database in sharepoint 2010 (development)

    Hi,
    I want to create a visual webpart which will read data from excel sheet and import it in to sql server database.(using sharepoint development)
    I want to do it using visual webpart.
    Please help to solve the issue.
    Thanks in advance!
    Regards
    Rajni

    Hi  Rajni,
    Microsoft.Office.Interop.Excel assembly provides class to read excel file data, in your web part solution, reference the assembly, and following blog contains samples about how to read the excel file data,
    and import it to SQL  database.
    1.Create a Visual Web Part Project:Create
    Visual Web Parts in SharePoint 2010
    2.Read the excel workbook by using SPFile class:
    http://alancejacob.blogspot.in/2012/06/read-data-from-excel-file-and-insert-in.html
    http://stackoverflow.com/questions/14496608/read-excel-file-stored-in-sharepoint-document-library
    3.Export the excel workbook to SQL Server:
    http://www.c-sharpcorner.com/UploadFile/99bb20/import-excel-data-to-sql-server-in-Asp-Net/
    Best Regards,
    Eric
    Eric Tao
    TechNet Community Support

  • Insert Data from Oracle to MS-SQL and back from MS-SQL to Oracle !

    Dear Gurus,
    Good day,
    I have Oracle db 10.1.0.2 on Sun Solaris 9 and want it to communicate online with an MS-SQL server DB on a windows machine.
    Oracle states that i can use the TG4MSQL ( Transparent Gateway for MS-SQL ).
    The issue here that this TG4MSQL needs to be installed on a db on WINDOWS then make a DB link from this db to MS-SQL as well as to the original oracle db because TG4MSQL is not available on UNIX ( only in 11g ) !
    Is there any way to do this 2-way insert from/to MS-QL & Oracle without creating a new dummy DB for TG4MSQL?
    Is there any other ways or methods?
    Please advise,
    Appreciate your help.
    Cheers,
    Firas

    I think you must have mis-read or mis-understood about the Transparent Gateway. I've not worked with the one for MSSQL but have for DB2.
    The OTG installs on the server with the 'foreign' (non-Oracle) database. It simply acts as a client to that database, presenting an Oracle interface on the other side - somewhat analogous to ODBC presenting a common interface for connections to various db or db-like products.
    As such, it only makes sense that the OTG for MSSQL would only be available for Windows ... Windows is the only platform that MSSQL runs on.
    When I was using the OTG for DB2, we simply installed the OTG on the Z/OS system (IBM mainframe) hosting the DB2, then defined a dblink in the Oracle database (that one was running on Windows) to point to it. As far as the Oracle db was concerned, it had no reason to know that the link was pointing to a non-Oracle db.

  • MCTS 70-466 Implementing Data Models and Reports with Microsoft SQL Server 2012

    I am searching for training kit for Exam 70-466 (Implementing Data Models and Reports with Microsoft SQL Server 2012) but I think is not published yet. I was expecting its release in Jan or Feb 2014. Would any one can tell me its release date or any place
    where I can find this book.
    Thanks
     

    Hi Azhar lqbal Gondal,
    According to your description, since the issue regards training and certification,
     I suggest you post the question in the Learning forums at
    http://social.technet.microsoft.com/Forums/en-US/home?category=learning. It is appropriate and more experts will assist you. If you have a specific technical question about Microsoft SQL Server,
     you can visit and post your question on  the SQL Server Forum.
    There is some detail about Exam 70-466 Implementing Data Models and Reports with Microsoft SQL Server 2012, you can review the following articles.
    Exam content can be found here:
    http://www.microsoft.com/learning/en-us/exam-70-466.aspx
    http://borntolearn.mslearn.net/certification/database/w/wiki/525.466-implementing-data-models-and-reports-with-microsoft-sql-server-2012.aspx#fbid=Mn-t6aRhs-H
    Regards,
    Sofiya Li
    Sofiya Li
    TechNet Community Support

  • Performance Issue using min() and max() in one SQL statement

    I have a simple query that selects min() and max() from one column in a table in one sql statment.
    The table has about 9 Million rows and the selected column has a non unique index. The query takes 10 secs. When i select min() and max() in separate statements, each takes only 10 msecs:
    This statement takes 10 secs:
    select min(date_key) , max(date_key)
    from CAPS_KPIC_BG_Fact_0_A
    where date_key != TO_DATE(('1900-1-1' ),( 'YYYY-MM-DD'))
    This statement takes 10 msecs:
    select min(date_key)
    from MYTABLE
    where date_key != TO_DATE(('1900-1-1' ),( 'YYYY-MM-DD'))
    union all
    select max(date_key) from MYTABLE
    Because the first statement is part of an autmatic generated SQL of an application, i can't change it and i have to optimize the data model. How can i speed up the first statement?

    I've ran similar query on a table that has 10 milliion rows, with an index on the date column
    This is what I have found:
    SQL> set timing on
      1  SELECT MIN(ID_DATE) MIN_DATE, MAX(ID_DATE) MAX_DATE
      2      FROM MY_DATE
      3*     WHERE ID_DATE != TO_DATE(('1900-1-1' ),( 'YYYY-MM-DD'))
    SQL> /
    MIN_DATE  MAX_DATE
    03-APR-76 06-JAN-02
    real: 43383
    SQL> SELECT MIN(ID_DATE) MIN_DATE FROM MY_DATE
      2   WHERE ID_DATE != TO_DATE(('1900-1-1' ),( 'YYYY-MM-DD'))
      3  UNION ALL
      4  SELECT MAX(ID_DATE) MAX_DATE FROM MY_DATE
      5   WHERE ID_DATE != TO_DATE(('1900-1-1' ),( 'YYYY-MM-DD'))
      6  /
    MIN_DATE
    03-APR-76
    06-JAN-02
    real: 20
    SQL> SELECT MIN_DATE, MAX_DATE FROM
      2  (SELECT MAX(ID_DATE) MAX_DATE FROM MY_DATE
      3  WHERE ID_DATE != TO_DATE(('1900-1-1' ),( 'YYYY-MM-DD')) ) A,
      4  (SELECT MIN(ID_DATE) MIN_DATE FROM MY_DATE
      5  WHERE ID_DATE != TO_DATE(('1900-1-1' ),( 'YYYY-MM-DD')) ) B
      6  /
    MIN_DATE  MAX_DATE
    03-APR-76 06-JAN-02
    real: 10
    SQL> My conculsion, there is nothing you can do to the tables that will improve that particular statement.
    Why can't you modify the application?

  • How oracle replaces "carrage return, tab and blank" in v$sql.sql_text??

    Hi. all.
    I am wondering how oracle replace "carrage return, tab and blank" character to v$sql.sql_text??
    I am try to find sql_id by the following query.
    select * from v$sql where sql_text like 'blur blur %'.
    However, how can I specify 'blur blur %' when the original sql text includes "carrage return, tab, amd double blank"?
    To be more specific,
    the original sql statement:
    select
    col_a,
    col_b , -- tab character included
    colc , -- more than one blank included
    Then, how can I specifiy "sql_text like 'blur blur %'" ??
    As far as I know, oracle replace "carrage return, tab, and more than one blank" to "ONE BLANK" character.
    Is this right???
    Thanks in advance.
    Best Regards.

    Oracle simply unformat the SQL text and put it into v$sql.sql_text because SQL formatting is only for reading and clearity purpose. It don't help to generate SQL_ID and execution plan. You may get couple of freely avilable SQL formatting tool on the internet, you can simply copy SQL_TEXT and if you paste them into those tool, they will auto format, tab, upper and lower case of required words.
    If you find this reply helpful or correct, please mark accordingly because you asked 17 questions and zero answerred. This seems that this forum is 0% useful to you! (sad)
    Regards
    Girish Sharma

  • How does Index fragmentation and statistics affect the sql query performance

    Hi,
    How does Index fragmentation and statistics affect the sql query performance
    Thanks
    Shashikala
    Shashikala

    How does Index fragmentation and statistics affect the sql query performance
    Very simple answer, outdated statistics will lead optimizer to create bad plans which in turn will require more resources and this will impact performance. If index is fragmented ( mainly clustered index,holds true for Non clustred as well) time spent in finding
    the value will be more as query would have to search fragmented index to look for data, additional spaces will increase search time.
    Please mark this reply as the answer or vote as helpful, as appropriate, to make it useful for other readers
    My TechNet Wiki Articles

  • Connecting to datasource and retrieve, insert and update data in SQL Server

    hi,
    i am trying to retrieve, insert and update data from SQL Server 2000 and display in JSPDynPage and is for Portal Application. I have already created datasource in visual composer. Is there any sample codes for mi to use it as reference???
    Thanks
    Regards,
    shixuan

    Hi,
    See this link
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/6209b52e-0401-0010-6a9f-d40ec3a09424
    Regards,
    Senthil kumar K.

  • How to populate image and text field in SQL Server

    I want to populate a table, i.e insert images in a table in SQL Server. I am using Java(JSP/Servlet). Can any one suggest me how to populate the image and text fields in SQL Server...of course, using Java. If possible, could you please give me a piece of code?
    Regards -
    Samit

    Hi,
    Please check the following link for information on inserting images in to sql server database.
    http://www.databasejournal.com/features/mssql/article.php/1475641
    Cheers,
    vidyut

  • Reviewing Windows NT Rights and Privileges Granted for SQL Server Service Accounts

    Hi Folks,
    I am an experienced .NET apps developer who has been tasked with writing a bunch of technical controls for all the SQL Server instances on a domain.
    So for the last month I have been diving in the deep end learning Powershell, dba and infrastructure tasks. This is still a work in progress, so be kind to me.. ;o)
    So the task I am stuck on is described in the section on 'Reviewing Windows NT Rights and Privileges Granted for SQL Server Service Accounts' http://technet.microsoft.com/en-us/library/ms143504(v=sql.105).aspx
    I have not been able to find cmdlets that gives me this information. I have found some exes which come frustratingly close like NTRights.exe. This lets me specify a computer name which is great, but only seems to let you set or deny permissions, not just
    list them!
    Any help with this would be very much appreciated as I am firmly stuck. As per comments above also bear in mind that up until around 1.5 months ago I had never used powershell / knew very much at all about SQL server admin etc. Feeling much more comfortable
    with them now, but much less so with Active Directory/ windows permission structures etc so please can I ask anyone kind enough to reply to try and keep the acronyms down as much as humanly possible.. ;o)
    Cheers 
    Kieron

    Hi Kieron,
    Take a look at this module, it makes permissions much easier to work with than what's currently available:
    https://gallery.technet.microsoft.com/scriptcenter/PowerShellAccessControl-d3be7b83
    Don't retire TechNet! -
    (Don't give up yet - 13,085+ strong and growing)

  • Filler and Skip command in SQL Loader

    Hai Gurus !
    Can Any help me to send code for filler and skip command in SQL Loader. and please explain about filler, for what purpose it is used.

    Have you checked on the documentation? Filler is explained for example in the chapter Field List Reference.
    C.

  • Write the DDL to construct the Facebook User and Post tables in SQL server.

    Write the DDL to construct the Facebook User and Post tables in SQL server. You need to populate the user table with the user’s information provided as in Figure 1 and additional attributes may be needed for the design. Use the ID in the excel file to
    identify the other Facebook user. For example ID 612831408762037 is David Cunliffe. Import the excel sheets to SQL server and then write effective SQL to merge the two tables into the Post table. Ensure the relationship is maintained between entities. Submit
    the SQL scripts that create the database and tables, import the excel sheets and populate the tables such that one can re-create the database and tables with all the data by running the script.

    IF NOT EXISTS(SELECT * FROM sys.databases WHERE name = N'xxx')
    CREATE DATABASE xxx
    GO
    USE xxx
    IF EXISTS(SELECT * FROM sys.tables WHERE name = N'DAVID') 
    DROP TABLE DAVID;
    IF EXISTS(SELECT * FROM sys.tables WHERE name = N'JOHN')
    DROP TABLE JOHN;
    IF EXISTS(SELECT * FROM sys.tables WHERE name = N'NEWDAVID') 
    DROP TABLE NEWDAVID;
    IF EXISTS(SELECT * FROM sys.tables WHERE name = N'NEWJOHN') 
    DROP TABLE NEWJOHN;
    IF EXISTS(SELECT * FROM sys.tables WHERE name = N'USER') 
    DROP TABLE [USER];
    IF EXISTS(SELECT * FROM sys.tables WHERE name = N'POST') 
    DROP TABLE POST;
    CREATE TABLE DAVID(
    ID VARCHAR(100),
    [MESSAGE] VARCHAR(MAX),
    [TYPE] VARCHAR(MAX),
    CREATED_TIME VARCHAR(MAX),
    UPDATED_TIME VARCHAR(MAX),
    SHARES_COUNT VARCHAR(MAX),
    [COUNT OF LIKES NAME] VARCHAR(MAX),
    [COUNT OF COMMENTS MESSAGE] VARCHAR(MAX),
    LINK VARCHAR(MAX),
    NAME VARCHAR(MAX),
    [DESCRIPTION] VARCHAR(MAX),
    CREATE TABLE JOHN(
    ID VARCHAR(100),
    LINK VARCHAR(MAX),
    NAME VARCHAR(MAX),
    [DESCRIPTION] VARCHAR(MAX),
    [TYPE] VARCHAR(MAX),
    CREATED_TIME VARCHAR(MAX),
    UPDATED_TIME VARCHAR(MAX),
    [COUNT OF LIKES NAME] VARCHAR(MAX),
    [COUNT OF COMMENTS MESSAGE] VARCHAR(MAX),
    [MESSAGE] VARCHAR(MAX),
    SHARES_COUNT VARCHAR(MAX),
    EXECUTE (N'BULK INSERT DAVID FROM ''' + 'datapath' + N'david.csv''
    WITH (
        CHECK_CONSTRAINTS,
        CODEPAGE=''ACP'',
        DATAFILETYPE = ''char'',
        FIELDTERMINATOR= '','',
        ROWTERMINATOR = ''\n'',
        KEEPIDENTITY,
        TABLOCK
    EXECUTE (N'BULK INSERT JOHN FROM ''' + 'datapath' + N'john.csv''
    WITH (
        CHECK_CONSTRAINTS,
        CODEPAGE=''ACP'',
        DATAFILETYPE = ''char'',
        FIELDTERMINATOR= '','',
        ROWTERMINATOR = ''\n'',
        KEEPIDENTITY,
        TABLOCK
    SELECT * FROM DAVID
    SELECT * FROM JOHN
    CREATE TABLE NEWDAVID(
    POST_ID VARCHAR(100),
    [USER_ID] VARCHAR(100),
    CREATED_DATE VARCHAR(MAX),
    CREATED_YEAR VARCHAR(MAX),
    CREATED_MONTH VARCHAR(MAX),
    UPDATED_DATE VARCHAR(MAX),
    UPDATED_YAER VARCHAR(MAX),
    UPDATED_MONTH VARCHAR(MAX),
    [MESSAGE] VARCHAR(MAX),
    SHARES_COUNT VARCHAR(MAX),
    [COUNT OF LIKES NAME] VARCHAR(MAX),
    [COUNT OF COMMENTS MESSAGE] VARCHAR(MAX),
    NAME VARCHAR(MAX),
    [TYPE] VARCHAR(MAX),
    LINK VARCHAR(MAX),
    [DESCRIPTION] VARCHAR(MAX),
    CREATE TABLE NEWJOHN(
    POST_ID VARCHAR(100),
    [USER_ID] VARCHAR(100),
    CREATED_DATE VARCHAR(MAX),
    CREATED_YEAR VARCHAR(MAX),
    CREATED_MONTH VARCHAR(MAX),
    UPDATED_DATE VARCHAR(MAX),
    UPDATED_YAER VARCHAR(MAX),
    UPDATED_MONTH VARCHAR(MAX),
    [MESSAGE] VARCHAR(MAX),
    SHARES_COUNT VARCHAR(MAX),
    [COUNT OF LIKES NAME] VARCHAR(MAX),
    [COUNT OF COMMENTS MESSAGE] VARCHAR(MAX),
    NAME VARCHAR(MAX),
    [TYPE] VARCHAR(MAX),
    LINK VARCHAR(MAX),
    [DESCRIPTION] VARCHAR(MAX),
    INSERT INTO NEWJOHN
    SELECT SUBSTRING(ID, CHARINDEX('_', ID) + 1, LEN(ID) - CHARINDEX('_', ID)) AS POST_ID, 
      SUBSTRING(ID, 1, CHARINDEX('_', ID) -1) AS [USER_ID], 
      SUBSTRING(CREATED_TIME, 1, 10) AS CREATED_DATE,
      SUBSTRING(CREATED_TIME, 1, 4) AS CREATED_YEAR,
      SUBSTRING(CREATED_TIME, 6, 2) AS CREATED_MONTH,
      SUBSTRING(UPDATED_TIME, 1, 10) AS UPDATED_DATE,
      SUBSTRING(UPDATED_TIME, 1, 4) AS UPDATED_YEAR,
      SUBSTRING(UPDATED_TIME, 6, 2) AS UPDATED_MONTH,
      [MESSAGE], SHARES_COUNT, [COUNT OF LIKES NAME], [COUNT OF COMMENTS MESSAGE], NAME, [TYPE], LINK, [DESCRIPTION]
    FROM JOHN
    INSERT INTO NEWDAVID
    SELECT SUBSTRING(ID, CHARINDEX('_', ID) + 1, LEN(ID) - CHARINDEX('_', ID)) AS POST_ID, 
           SUBSTRING(ID, 1, CHARINDEX('_', ID) -1) AS [USER_ID], 
      SUBSTRING(CREATED_TIME, 1, 10) AS CREATED_DATE,
      SUBSTRING(CREATED_TIME, 1, 4) AS CREATED_YEAR,
      SUBSTRING(CREATED_TIME, 6, 2) AS CREATED_MONTH,
      SUBSTRING(UPDATED_TIME, 1, 10) AS UPDATED_DATE,
      SUBSTRING(UPDATED_TIME, 1, 4) AS UPDATED_YEAR,
      SUBSTRING(UPDATED_TIME, 6, 2) AS UPDATED_MONTH,
      [MESSAGE], SHARES_COUNT, [COUNT OF LIKES NAME], [COUNT OF COMMENTS MESSAGE], NAME, [TYPE], LINK, [DESCRIPTION]
    FROM DAVID
    SELECT * FROM NEWDAVID
    SELECT * FROM NEWJOHN
    CREATE TABLE POST (
    POST_ID VARCHAR(100) NOT NULL,
    [USER_ID] VARCHAR(100),
    CREATED_DATE VARCHAR(MAX),
    CREATED_YEAR VARCHAR(MAX),
    CREATED_MONTH VARCHAR(MAX),
    UPDATED_DATE VARCHAR(MAX),
    UPDATED_YAER VARCHAR(MAX),
    UPDATED_MONTH VARCHAR(MAX),
    [MESSAGE] VARCHAR(MAX),
    SHARES_COUNT VARCHAR(MAX),
    [COUNT OF LIKES NAME] VARCHAR(MAX),
    [COUNT OF COMMENTS MESSAGE] VARCHAR(MAX),
    NAME VARCHAR(MAX),
    [TYPE] VARCHAR(MAX),
    LINK VARCHAR(MAX),
    [DESCRIPTION] VARCHAR(MAX),
    INSERT INTO POST
    SELECT * FROM NEWDAVID UNION SELECT * FROM NEWJOHN
    SELECT * FROM POST 
    CREATE TABLE [USER] 
    [USER_ID] VARCHAR(100) NOT NULL,
    INSERT INTO [USER] VALUES (612831408762037),(1119736203) 
    ALTER TABLE [USER] ADD PRIMARY KEY([USER_ID])
    ALTER TABLE POST ADD PRIMARY KEY(POST_ID) 
    ALTER TABLE POST ADD FOREIGN KEY([USER_ID]) REFERENCES [USER]([USER_ID])

  • FORCE_LOGGING=YES and Unrecoverable option of SQL LOADER

    Hi All,
    I have small query regarding FORCE_LOGGING=YES and Unrecoverable option of SQL Loader.
    We have our Database set with FORCE_LOGGING=YES option.
    We have huge amount of transaction happen using SQL Loader. For the SQL Loader we have set the option direct=true and unrecoverable.
    The Unrecoverable option won't generate the redo logs while loading, but as we have FORCE_LOGGING=YES.
    Whice option will take effect? Will it still generate redo logs?
    Thanks for your help,
    Manoj

    Yes - it will still generate redo. Like I wrote, setting FORCE_LOGGING = TRUE for the database utterly guarantees there will be no nologging operations.
    In fact, only direct path inserts have the option of being nologging in the first place. Non direct path (aka conventional) inserts always generate redo anyway.
    There is a lot of confusion around this area of Oracle, and I don't think it's documented as well as it could be. If you're still a little unsure, asktom.oracle.com is an excellent website where you can find further explanation (search for 'nologging').

  • How to query using 3 optional inputs and case insensitive using SQL?

    Hi Folks,
    I am having trouble with the following query:
    select *
    from t1
    where (1=1)
    and lower(fname) like lower ('%mary%')
    and lower(lname) like lower ('%smith%')
    and lower(status) like lower ('%%')
    I need all three statements in the where clause to be completely optional and case insensitve.
    if I just write the following:
    (1=1)
    and lower(fname) like lower ('%mary%')
    and lower(lname) like lower ('%%') <-- Need to ignore this line
    and lower(status) like lower ('%%') <-- need to ignore this line
    nothing is returned. How do I ignore the 2nd and third lines using SQL only. I know about the ask TOM Article using procedures, but I need to do this using SQL only
    thanks in advance
    Edited by: user2184537 on Oct 16, 2009 9:40 AM
    Edited by: user2184537 on Oct 16, 2009 10:10 AM

    Hi,
    Is this query generated dynamically? (That's the only reason I can see for saying "WHERE 1 = 1".)
    If so, test the parameters for NULL, and only add them if a value was given.
    Failing that, you can explicitly test for NULL parameters
    where   (     lower(fname)  = '%' || lower (:p_fname) || '%'
         OR     :p_fname     IS NULL
    and     (     lower(lname)  = '%' || lower (:p_lname) || '%'
         OR     :p_lname     IS NULL
    and     (     lower(status) = '%' || lower (:p_status) || '%'
         OR     :p_status    IS NULL
         )Did you really mean to have all those '%''s? '%' is a wildcard in LIKE operations, but not when using =.
    Perhaps you should be saying:
    where   (     lower(fname)  = lower (:p_fname)
         OR     :p_fname     IS NULL
    and     (     lower(lname)  = lower (:p_lname)
         OR     :p_lname     IS NULL
    and     (     lower(status) = lower (:p_status)
         OR     :p_status    IS NULL
         )You're already handling case-sensitivity, by using LOWER in all the comparisons.
    Unfortunately, you can't just say something like:
    WHERE   LOWER (fname) = LOWER (NVL (:p_fname, fname))because that would discartd rows where fname IS NULL when :p_name is also NULL.
    Edited by: Frank Kulash on Oct 16, 2009 12:54 PM

Maybe you are looking for