Getting ORA-01422 Error in stored procedure

ORA-01422: exact fetch returns more than requested number of rows
This page explains the error:
http://www.techonthenet.com/oracle/errors/ora01422.php
This is my procedure:
The select into clause is what's causing the error. I understand the nature of the error, but the strange thing is that when i execute the sql, removing the 'into'
part with my test-parameters I just receive a single row. Still when I execute my procedure with the same parameters I get the error. What could be wrong?
create or replace
PROCEDURE COUNTER_GETACTIVE
METERPOINTID IN MeterPointCounters.MeterPointId%Type,
METERPOINTCOUNTERNR IN METERPOINTCOUNTERS.METERPOINTCOUNTERNR%type,
p_cursor out REFCURSOR_PKG.counter_cursor
IS
l_counterNr CounterBridgeTable.CounterNr%type;
l_meterId CounterBridgeTable.MeterId%type;
BEGIN
select counternr, meterid into l_counterNr, l_meterId from CounterBridgeTable where meterpointid = METERPOINTID and meterpointcounternr = METERPOINTCOUNTERNR and datetom is null;
open p_cursor for select * from counters where counternr = l_counterNr and meterId = l_meterId;
END COUNTER_GETACTIVE;

You are actually running this query
select counternr, meterid from CounterBridgeTable where meterpointid = METERPOINTID and meterpointcounternr = METERPOINTCOUNTERNR and datetom is null;the param name is the same as the column, it is ignoring your param and pretty much doing a self join
try this:
create or replace
PROCEDURE COUNTER_GETACTIVE
p_METERPOINTID IN MeterPointCounters.MeterPointId%Type,
p_METERPOINTCOUNTERNR IN METERPOINTCOUNTERS.METERPOINTCOUNTERNR%type,
p_cursor out REFCURSOR_PKG.counter_cursor
IS
l_counterNr CounterBridgeTable.CounterNr%type;
l_meterId CounterBridgeTable.MeterId%type;
BEGIN
select counternr, meterid into l_counterNr, l_meterId from CounterBridgeTable where meterpointid = p_METERPOINTID and meterpointcounternr = p_METERPOINTCOUNTERNR and datetom is null;
open p_cursor for select * from counters where counternr = l_counterNr and meterId = l_meterId;
END COUNTER_GETACTIVE;Edited by: tanging on Jun 8, 2010 10:37 AM

Similar Messages

  • Getting ORA-01429 error while changing character set

    When I am changing character set from WE8DEC to AL32UTF8, I am getting ORA-01429 error
    SQL> ALTER DATABASE CHARACTER SET INTERNAL_USE AL32UTF8 ;
    ALTER DATABASE CHARACTER SET INTERNAL_USE AL32UTF8
    ERROR at line 1:
    ORA-00604: error occurred at recursive SQL level 1
    ORA-01429: Index-Organized Table: no data segment to store overflow row-pieces

    Chockalingam wrote:
    I am using above steps as per oracle doc only.
    http://docs.oracle.com/cd/B10500_01/server.920/a96529/ch10.htm
    No, you are not.
    - You are not using the correct version doc vs. Oracle server version. Try to find the same suggestion in the relevant doc.
    - The doc you reference specifically says "... it can be used only under special circumstances. The ALTER DATABASE CHARACTER SET statement does not perform any data conversion, so it can be used +if and only if the new character set is a strict superset of the current character set+." (emphasis is mine)
    You do not have a strict superset.
    - Also the special clauses you have used are not documented - for a reason.
    Please edit your posts above to remove the ill-advice (steps with internal use only clauses) that does not belong on a forum.
    Edited by: orafad on Mar 16, 2012 9:47 PM

  • How can I get the printed message of stored procedure in JPA

    Hi, I'm using JPA to invoke stored procedure in database, a segment of the sproc is like below:
    if @create_type != 'a1' and @create_type != 'a'
         begin
         print 'create type must be either ''a1'' if you pass in A1 ID, or ''a'' if you pass in User ID'
         select 0 as "Result"
         endI can get the 0 as the result, it means business operation failed currently, but how could I get the message of 'create type must be either ''a1'' if you pass in A1 ID, or ''a'' if you pass in User ID'?
    That information is important as it indicates why the operation failed.
    Thanks

    how can i get rows count returned by stored procedure in oracle sql developer?
    Procedures do NOT return a value - functions return a value.
    A procedure executes whatever code it contains. That code could contain many queries that produce many row counts.
    Does your procedure take one or more IN, OUT or IN OUT parameters?
    See example 8-1 for an example of executing a procedure that has an OUT parameter.
    http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/subprograms.htm#CHDBIEEE

  • Suddenly getting ORA-12514 error Oracle 11gr2

    I installed Oracle 11g r2 fine, had 2 databases (se3 and mydb, both have db_domain .orcl i.e. mydb.orcl and se3.orcl) running on it fine till yesterday. but suddenly im getting ORA-12514 error (TNS:listener doesn't know of service requested in connect descriptor)..
    My tnsnames.ora file:
    # tnsnames.ora Network Configuration File: G:\oracledb\product\11.2.0\dbhome_1\network\admin\tnsnames.ora
    # Generated by Oracle configuration tools.
    LISTENER_MYDB =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    ORACLR_CONNECTION_DATA =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
        (CONNECT_DATA =
          (SID = CLRExtProc)
          (PRESENTATION = RO)
    MYDB =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = mydb.orcl)
    SE3 =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = se3.orcl)
    LISTENER_SE3 =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    and my listener.ora file is as follows:
    # listener.ora Network Configuration File: G:\oracledb\product\11.2.0\dbhome_1\network\admin\listener.ora
    # Generated by Oracle configuration tools.
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = CLRExtProc)
          (ORACLE_HOME = G:\oracledb\product\11.2.0\dbhome_1)
          (PROGRAM = extproc)
          (ENVS = "EXTPROC_DLLS=ONLY:G:\oracledb\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
          (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    ADR_BASE_LISTENER = G:\oracledb
    * i have both of databases up and running(confirmed through administration assistant), the listener is up.. im able to execute "tnsping mydb/se3".. i'm not able to connect to either one of them through sqlplus/sql developer.. The result of "lsnrctl service" is as follows:
    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
    TNS-12541: TNS:no listener
    TNS-12560: TNS:protocol adapter error
      TNS-00511: No listener
       32-bit Windows Error: 2: No such file or directory
    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))
    Services Summary...
    Service "CLRExtProc" has 1 instance(s).
      Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
        Handler(s):
          "DEDICATED" established:0 refused:0
             LOCAL SERVER
    The command completed successfully
    PLEASE HELP ME FRIENDS!! I HAVE A PROJECT DUE IN EARLY OCTOBER

    Hi,
    Instead of this:
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = CLRExtProc)
          (ORACLE_HOME = G:\oracledb\product\11.2.0\dbhome_1)
          (PROGRAM = extproc)
          (ENVS = "EXTPROC_DLLS=ONLY:G:\oracledb\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
          (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    have the following in your listener file
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = CLRExtProc)
          (ORACLE_HOME = G:\oracledb\product\11.2.0\dbhome_1)
          (PROGRAM = extproc)
          (ENVS = "EXTPROC_DLLS=ONLY:G:\oracledb\product\11.2.0\dbhome_1\bin\oraclr11.dll")
       (SID_DESC =
          (SID_NAME = mydb)
          (ORACLE_HOME = G:\oracledb\product\11.2.0\dbhome_1)
        (SID_DESC =
          (SID_NAME = se3)
          (ORACLE_HOME = G:\oracledb\product\11.2.0\dbhome_1)   
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
          (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    Also, dont have 'localhost' in your listener.ora file, provide the actual IP or hostanme. NEVER YOU should have
    localhost.
    Restart listener and try.
    Thanks &
    Best Regard,

  • Error in stored procedure while using dbms_datapump for transportable

    Hi,
    I'm facing following issue:
    SQL> select * from v$version;
    BANNER
    Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
    PL/SQL Release 10.2.0.4.0 - Production
    CORE 10.2.0.4.0 Production
    TNS for Solaris: Version 10.2.0.4.0 - Production
    NLSRTL Version 10.2.0.4.0 - Production
    ====================================================================================
    I'm trying to do transportable tablespace through stored procedure with help of DBMS_DATAPUMP, Following is the code :
    ==================================================================================
    create or replace
    procedure sp_tts_export(v_tbs_name varchar2) as
    idx NUMBER; -- Loop index
    JobHandle NUMBER; -- Data Pump job handle
    PctComplete NUMBER; -- Percentage of job complete
    JobState VARCHAR2(30); -- To keep track of job state
    LogEntry ku$_LogEntry; -- For WIP and error messages
    JobStatus ku$_JobStatus; -- The job status from get_status
    Status ku$_Status; -- The status object returned by get_status
         dts           varchar2(140):=to_char(sysdate,'YYYYMMDDHH24MISS');
         exp_dump_file varchar2(500):=v_tbs_name||'_tts_export_'||dts||'.dmp';
         exp_log_file varchar2(500):=v_tbs_name||'_tts_export_'||dts||'.log';
         exp_job_name varchar2(500):=v_tbs_name||'_tts_export_'||dts;
         dp_dir varchar2(500):='DATA_PUMP_DIR';
         log_file UTL_FILE.FILE_TYPE;
         log_filename varchar2(500):=exp_job_name||'_main'||'.log';
         err_log_file UTL_FILE.FILE_TYPE;
         v_db_name varchar2(1000);
         v_username varchar2(30);
         t_dir_name VARCHAR2(4000);
    t_file_name VARCHAR2(4000);
    t_sep_pos NUMBER;
         t_dir varchar2(30):='temp_0123456789';
         v_sqlerrm varchar2(4000);
    stmt varchar2(4000);
         FUNCTION get_file(filename VARCHAR2, dir VARCHAR2 := 'TEMP')
    RETURN VARCHAR2 IS
    contents VARCHAR2(32767);
    file BFILE := BFILENAME(dir, filename);
    BEGIN
              DBMS_LOB.FILEOPEN(file, DBMS_LOB.FILE_READONLY);
              contents := UTL_RAW.CAST_TO_VARCHAR2(
    DBMS_LOB.SUBSTR(file));
              DBMS_LOB.CLOSE(file);
              RETURN contents;
         END;
    begin
    --execute immediate ('drop tablespace test including contents and datafiles');
    --execute immediate ('create tablespace test datafile ''/home/smishr02/test.dbf'' size 10m');
    --execute immediate ('create table prestg.test_table (a number) tablespace test');
    --execute immediate ('insert into prestg.test_table values (1)');
    --commit;
    --execute immediate ('alter tablespace test read only');
    --dbms_output.put_line('11111111111111111111');
    dbms_output.put_line(log_filename||'>>>>>>>>>>>>>>>>>>>>>>>>>>>'|| dp_dir);
    log_file:=UTL_FILE.FOPEN (dp_dir, log_filename, 'w');
    UTL_FILE.PUT_LINE(log_file,'#####################################################################');
    UTL_FILE.PUT_LINE(log_file,'REPORT: GENERATED ON ' || SYSDATE);
    UTL_FILE.PUT_LINE(log_file,'#####################################################################');
    select global_name,user into v_db_name,v_username from global_name;
    UTL_FILE.PUT_LINE(log_file,'Database:'||v_db_name);
    UTL_FILE.PUT_LINE(log_file,'user running the job:'||v_username);
    UTL_FILE.PUT_LINE(log_file,'for tablespace:'||v_tbs_name);
    UTL_FILE.NEW_LINE (log_file);
    stmt:='ALTER TABLESPACE '||v_tbs_name || ' read only';
    dbms_output.put_line('11111111111111111111'||stmt);
    execute immediate (stmt);
    UTL_FILE.PUT_LINE(log_file,' '||v_tbs_name || ' altered to read only mode.');
    UTL_FILE.NEW_LINE (log_file);
    UTL_FILE.PUT_LINE(log_file,'#####################################################################');
    UTL_FILE.NEW_LINE (log_file);
    UTL_FILE.PUT_LINE(log_file,' Initiating the Datapump engine for TTS export..............');
    UTL_FILE.NEW_LINE (log_file);
    dbms_output.put_line('11111111111111111111');
    JobHandle :=
    DBMS_DATAPUMP.OPEN(
    operation => 'EXPORT'
    *,job_mode => 'TRANSPORTABLE'*
    *,remote_link => NULL*
    *,job_name => NULL*
    --,job_name => exp_job_name
    --        ,version => 'LATEST'
    UTL_FILE.PUT_LINE(log_file,'Done');
    UTL_FILE.NEW_LINE (log_file);
    UTL_FILE.PUT_LINE(log_file,' Allocating dumpfile................');
    DBMS_DATAPUMP.ADD_FILE(
    handle => JobHandle
    ,filename => exp_dump_file
    ,directory => dp_dir
    ,filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_DUMP_FILE
    -- ,filesize => '100M'
    UTL_FILE.PUT_LINE(log_file,'Done');
    UTL_FILE.NEW_LINE (log_file);
    UTL_FILE.PUT_LINE(log_file,' Allocating logfile................');
    DBMS_DATAPUMP.ADD_FILE(
    handle => JobHandle
    ,filename => exp_log_file
    ,directory => dp_dir
    ,filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE
    UTL_FILE.PUT_LINE(log_file,'Done');
    UTL_FILE.NEW_LINE (log_file);
    UTL_FILE.PUT_LINE(log_file,' Setting attributes................');
    DBMS_DATAPUMP.set_parameter(handle => JobHandle,
    name=>'TTS_FULL_CHECK',
    value=>1);
    DBMS_DATAPUMP.METADATA_FILTER(
    handle => JobHandle
    ,NAME => 'TABLESPACE_EXPR'
    ,VALUE => 'IN ('''||v_tbs_name||''')'
    -- ,object_type => 'TABLE'
    UTL_FILE.PUT_LINE(log_file,'Done');
    UTL_FILE.NEW_LINE (log_file);
    UTL_FILE.PUT_LINE(log_file,' Now starting datapump job................');
    DBMS_DATAPUMP.START_JOB(JobHandle);
    UTL_FILE.PUT_LINE(log_file,'Done');
    UTL_FILE.NEW_LINE (log_file);
    UTL_FILE.PUT_LINE(log_file,' Monitoring the job................');
    --------------Monitor the job
    PctComplete := 0;
    JobState := 'UNDEFINED';
    WHILE(JobState != 'COMPLETED') and (JobState != 'STOPPED')
    LOOP
    DBMS_DATAPUMP.GET_STATUS(
    handle => JobHandle
    ,mask => 15 -- DBMS_DATAPUMP.ku$_status_job_error + DBMS_DATAPUMP.ku$_status_job_status + DBMS_DATAPUMP.ku$_status_wip
    ,timeout => NULL
    ,job_state => JobState
    ,status => Status
    JobStatus := Status.job_status;
    -- Whenever the PctComplete value has changed, display it
    IF JobStatus.percent_done != PctComplete THEN
    DBMS_OUTPUT.PUT_LINE('*** Job percent done = ' || TO_CHAR(JobStatus.percent_done));
    PctComplete := JobStatus.percent_done;
    END IF;
    -- Whenever a work-in progress message or error message arises, display it
    IF (BITAND(Status.mask,DBMS_DATAPUMP.ku$_status_wip) != 0) THEN
    LogEntry := Status.wip;
    ELSE
    IF (BITAND(Status.mask,DBMS_DATAPUMP.ku$_status_job_error) != 0) THEN
    LogEntry := Status.error;
    ELSE
    LogEntry := NULL;
    END IF;
    END IF;
    IF LogEntry IS NOT NULL THEN
    idx := LogEntry.FIRST;
    WHILE idx IS NOT NULL
    LOOP
    DBMS_OUTPUT.PUT_LINE(LogEntry(idx).LogText);
    idx := LogEntry.NEXT(idx);
    END LOOP;
    END IF;
    END LOOP;
         --copy the datafiles to data dump dir     
         UTL_FILE.PUT_LINE(log_file,'Done');
    UTL_FILE.NEW_LINE (log_file);
    UTL_FILE.PUT_LINE(log_file,' Copying datafiles to dump directory................');
    -- grant select on dba_directories to prestg;
    declare
    cnt number;
    begin
    select count(*) into cnt from dba_directories
    where directory_name=upper(t_dir);
    if cnt=1 then
    execute immediate('DROP DIRECTORY '||t_dir);
    end if;
    end;
         FOR rec in (select file_name from sys.dba_data_files where tablespace_name=v_tbs_name)
         LOOP
         t_sep_pos:=instr(rec.file_name,'/',-1);
    t_dir_name:=substr(rec.file_name,1,t_sep_pos-1);
    t_file_name:=substr(rec.file_name,t_sep_pos+1,length(rec.file_name));
    dbms_output.put_line(t_dir_name|| ' ' || t_dir);
    dbms_output.put_line(t_file_name);
         execute immediate('CREATE DIRECTORY '||t_dir||' AS '''||t_dir_name||'''');
         UTL_FILE.PUT_LINE(log_file,' Copying '||rec.file_name||'................');
         utl_file.fcopy(t_dir, t_file_name, dp_dir, t_file_name);
         UTL_FILE.PUT(log_file,'Done');
         execute immediate('DROP DIRECTORY '||t_dir);
         END LOOP;
    UTL_FILE.NEW_LINE (log_file);
    UTL_FILE.PUT_LINE(log_file,' Altering tablespace to read write................');
         execute immediate ('ALTER TABLESPACE '||v_tbs_name || ' read write');
    UTL_FILE.PUT(log_file,' Done');
         err_log_file:=utl_file.fopen(dp_dir, exp_log_file, 'r');
         UTL_FILE.NEW_LINE (log_file);
    UTL_FILE.PUT_LINE(log_file,' content of export logfile................');
         loop
    begin
         utl_file.get_line(err_log_file,v_sqlerrm);
         if v_sqlerrm is null then
         exit;
         end if;
         UTL_FILE.PUT_LINE(log_file,v_sqlerrm);
    EXCEPTION
    WHEN NO_DATA_FOUND THEN
    EXIT;
    END;
         end loop;
              utl_file.fclose(err_log_file);
    utl_file.fclose(log_file);
    END;
    I'm getting following error when DBMS_DATAPUMP.OPEN is called in procedure:
    SQL> exec sp_tts_export('TEST');
    BEGIN sp_tts_export('TEST'); END;
    ERROR at line 1:
    ORA-31626: job does not exist
    ORA-06512: at "SYS.DBMS_SYS_ERROR", line 79
    ORA-06512: at "SYS.DBMS_DATAPUMP", line 938
    ORA-06512: at "SYS.DBMS_DATAPUMP", line 4566
    ORA-06512: at "PRESTG.SP_TTS_EXPORT", line 78
    ORA-06512: at line 1
    ==============================================================================================
    This procedure is part of user ABC. I'm getting the above when I'm running this under ABC schema. However I have tested the same procedure under sys schema. When I'm creating same procedure in SYS schema it is running fine. I am clueless on this. Pls help
    Thanks
    Shailesh
    Edited by: shaileshM on Jul 28, 2010 11:15 AM

    Privileges acquired via ROLE do NOT apply within named PL/SQL procedures.
    Explicit GRANT is required to resolve this issue.

  • Error calling stored procedure from MFC.

    Hello,
    I am using MFC to call a stored procedure written in PL/SQL, but when I make the call I get the next error in Spanish:
    "No se enlazaron columnas antes de llamar a SQLFetchScroll o SQLExtendedFetch", which more or less in English means:
    "No rows were binded before calling SQLFetchScroll or SQLExtendedFetch".
    I am using a CRecordset derived class to access the stored procedure. I am unable to find the error.
    THE STORED PROCEDURE'S HEADER:
    Sp_Int_Ot_Ordendetrabajoalta ( lineatrabajo NUMBER, lv_orden NUMBER, usuario
    VARCHAR2, idvehiculo NUMBER, fechamax1 VARCHAR2, resumen VARCHAR2, detalle
    VARCHAR2,
    coderp VARCHAR2, numtrabrecibidos NUMBER, lv_CODOT VARCHAR2, retorno OUT
    INTEGER)
    THE .H FOR THE CRECORDSET DERIVED CLASS (Visual Studio 6 comments removed)
    class CRecSP : public CRecordset
    public:
    CRecSP(CDatabase* pDatabase = NULL);
    DECLARE_DYNAMIC(CRecSP)
    CString m_szSQL;
    long m_RETORNO;
    virtual CString GetDefaultConnect();
    virtual CString GetDefaultSQL();
    virtual void DoFieldExchange(CFieldExchange* pFX);
    THE .CPP FOR THE CLASS (VS6 comments removed)
    IMPLEMENT_DYNAMIC(CRecSP, CRecordset)
    CRecSP::CRecSP(CDatabase* pdb) : CRecordset(pdb)
    m_RETORNO = 0;
    m_nParams = 1;
    m_nDefaultType = snapshot;
    CString CRecSP::GetDefaultConnect()
    return T( DBCONNECTION_STRING );
    CString CRecSP::GetDefaultSQL()
    return m_szSQL;
    void CRecSP::DoFieldExchange(CFieldExchange* pFX)
    pFX->SetFieldType(CFieldExchange::outputParam);
    RFX_Long(pFX, _T("[retorno]"), m_RETORNO );
    USING THE CRECORDSET DERIVED CLASS: (Vars read from EditBoxes as CStrings
    and formatted in the SQL)
    CRecSP *rec = new CRecSP(&db);
    szSQL.Format( "{CALL
    FGROT2005.SP_INT_OT_ORDENDETRABAJOALTA(%s,%s,'%s',%s,'%s','%s','%s','%s',%s,'%s',?)}",
    szLinea, szOrden, "USER", szIdVeh, szFechaMax, szResumen,
    szDetalle, "ERP", "0", szCodOT
    rec->m_szSQL = szSQL;
    //rec->Open( CRecordset::forwardOnly,szSQL,CRecordset::readOnly );
    rec->Open( );
    iError = rec->m_RETORNO;
    rec->Close();

    I am trying to pass parameter to test my procedure but it is giving this error : ORA-06531: Reference to uninitialized collection
    ORA-06512: at line 12
    Here is example for my test procedure:
    declare
    v_session_id_tab SESSION_ID_TAB_TYPE;
    v_service_type_tab SERVICE_TYPE_TAB_TYPE ;
    v_service_location_tab SERVICE_LOCATION_TAB_TYPE ;
    v_service_call_name_tab SERVICE_CALL_NAME_TAB_TYPE;
    v_service_call_start_time_tab SERVICE_CALL_ST_TAB_TYPE;
    v_service_call_end_time_tab SERVICE_CALL_ET_TAB_TYPE;
    v_service_call_duration_tab SERVICE_CALL_DUR_TAB_TYPE;
    v_status_tab STATUS_TAB_TYPE;
    v_notes_tab NOTES_TAB_TYPE;
    begin
    v_session_id_tab(1) := 1;
    v_service_type_tab(1) := 'db';
    v_service_location_tab(1) := 'local';
    v_service_call_name_tab(1) := 'Name of call';
    v_service_call_start_time_tab(1) := SYSDATE;
    v_service_call_end_time_tab(1) := SYSDATE;
    v_service_call_duration_tab(1) := 100;
    v_status_tab(1) := 'Z';
    v_notes_tab(1) := 'NOTES';
    BULK_INSERTS (v_session_id_tab,v_service_type_tab, v_service_location_tab,v_service_call_name_tab,v_service_call_start_time_tab,v_service_call_end_time_tab,
    v_service_call_duration_tab, v_status_tab, v_notes_tab);
    end;
    I declare all types at schema level.
    Please give your comments.
    Thank you

  • SQLJ error in stored procedure

    Okay I'm kind of new to this stuff so this is probably an easy
    question but I can't fix my current problem. Know I have been
    creating and compiling several java stored procedures in my
    oracle 8.1.7.0.0 enterprise edition database. So far everything
    is create I have created about a dozen and done all of their
    call specs and everything works without a hitch.
    The problem I have came into being when I tried to create a
    stored procedure that uses SQLJ. When I create my stored
    procedures I compile my java code straight into the database
    using the
    CREATE OR REPLACE AND COMPILE JAVA SOURCE named "myClass" AS
    source
    this has always worked from me except when I place my
    #sql ; lines at which point it issues a the following error
    SP2-7034 : unknown command beginning
    at which point is it ignores the line of code and continues to
    compile my java source. Does this mean the SQLJ is not enabled
    in my database or what? I have checked out the SQLJ developer’s
    hand book and it did not help me with this problem. Oh please
    wont some wise oracle god help me!

    user21354 wrote:
    i am creating the collection in my Stored procedure it is giving me this error
    declare
    type t_number is table of number;
    v_numbers t_number;
    begin
    select VISIT_ID
    bulk collect into v_numbers
    from visit
    where VISITTYPEID = 2;
    select VISIT_ID from v_numbers;
    end;
    error
    PL/SQL: ORA-00942: table or view does not exist
    please tell me this why this happeningcouple of things...
    context switching - Your second 'select visit_id' query is actually parsed outside plsql, in the 'sql engine'. This sql engine has no knowledge of what v_numbers is, it's expecting an actual table name but it can't find anything called v_numbers in it's metadata. So it bombs out with that error. Google 'context switching plsql' for more info. :o)
    - as v_numbers is a collection, you could just loop through the results:
      for n in 1..v_numbers.count
      loop
        dbms_output.put_line(v_numbers(n));
      end loop;- as stated above, a 'select' without 'into' won't work in plsql anyway.
    - there is a way of getting round the context switch, by creating your Type in sql rather than plsql and 'casting' it to a table. Let us know if you want to know the steps to do it, but try reading up on context switch first.
    cheers.

  • Unexpected error in stored procedure

    Howdy group...
    I have a stored procedure in Oracle;
    p_BILL_TO_ADDRESS1 IN CONT_ADDRESS.ADDRESS1%TYPE
    Default NULL, --VC(50)
    With a condition;
    IF p_BILL_TO_ADDRESS1 is NULL THEN
    Raise_Application_Error(-20100,'BILL TO Address cannot be a NULL Value');
    END IF;
    I have some PHP code that tries to insert the data;
    $addr = '1234 Main';
    $sth = oci_parse($conn, "begin D_ACCT_NEW(:p_BILL_TO_ADDRESS1, :P_Error_Return );end;");
    oci_bind_by_name($sth, ":p_BILL_TO_ADDRESS1", $addr, -1);
    oci_bind_by_name($sth, ":P_Error_Return", $errorcode, -1); oci_execute($sth);
    echo $errorcode;
    And I always get the following error;
    Warning: oci_execute() [function.oci-execute]: ORA-06502: PL/SQL:
    numeric or value error ORA-06512: at "SYSADM.D_ACCT_NEW", line 483
    ORA-20100: BILL TO Address cannot be a NULL Value ORA-06512: at line 1 in /home/foo/bar/glorp.php on line 25
    If anyone on the list understands the intricacies of Oracle, could you sooth my aching head and help me to understand what is going on here? I have RTFM and the following article from the PHP Oracle Cookbook;
    http://www.oracle.com/technology/pub/articles/oracle_php_cookbook/fuecks_sps.html
    ;and I still am clueless. Thanks a million in advance!
    null

    Here is the entire procedure. This is developed by a third party and I cannot chnage it, I just need to be able to write PHP to interact with it. Thanks for your help on this.
    create or replace Procedure D_ACCT_NEW
    -- Return Parameters
    p_Return OUT Varchar2,                -- CONTRACT_ID
    P_Error_Return OUT Varchar2,                -- Error Message if any
    -- Input Parameters
    p_USERNAME IN CONT_CUST.ENTRY_BY%TYPE Default NULL, --VC(40)
    p_ALT_ACCOUNT_NO IN CONT_CUST.ALT_ACCOUNT_NO%TYPE Default NULL, -- N/A
    p_ALT_SUB_ACCOUNT_ID IN CONT_CUST.ALT_SUB_ACCOUNT_ID%TYPE Default NULL, -- N/A)
    p_PARENT_CONTRACT_ID IN CONT_CUST.PARENT_CONTRACT_ID%TYPE Default NULL,
    -- Contact Data
    p_CUST_TYPE IN CUSTOMERS_INFO.CUST_TYPE%TYPE Default NULL, --VC(1)  I/B
    p_CONTACT_F_NAME IN CUSTOMERS_INFO.FIRST_NAME%TYPE           Default NULL, --VC(100)
    p_CONTACT_L_NAME IN CUSTOMERS_INFO.LAST_NAME%TYPE           Default NULL, --VC(100)
    p_CONTACT_MIDDLE_INITIAL IN CUSTOMERS_INFO.MIDDLE_INIT%TYPE      Default NULL, --VC(10)
    p_CONTACT_TITLE IN CUSTOMERS_INFO.NAME_TITLE%TYPE           Default NULL, --VC(10)
    P_CONTACT_SUFFIX IN CUSTOMERS_INFO.NAME_SUFFIX%TYPE      Default NULL, --VC(10)
    p_COMPANY_NAME IN CUSTOMERS_INFO.COMPANY_NAME%TYPE      Default NULL, --VC(50)
    p_HOME_PHONE_NUM IN CUSTOMERS_INFO.HOME_PHONE_NUM%TYPE Default NULL, --VC(25)
    p_BUSINESS_PHONE_NUM IN CUSTOMERS_INFO.BUSINESS_PHONE_NUM%TYPE Default NULL, --vn(25)
    p_COUNTRY_ID IN CUSTOMERS_INFO.COUNTRY_ID%TYPE Default NULL, --VN(4,0)
    p_EMAIL_ADDRESS IN CUSTOMERS_INFO.EMAIL_ADDRESS%TYPE      Default NULL, --VC(50)
    P_Contact_Name1 IN CUSTOMERS_INFO.other_field1%TYPE Default NULL,
    P_Contact_Name2 IN CUSTOMERS_INFO.other_field2%TYPE Default NULL,
    P_Contact_Name3 IN CUSTOMERS_INFO.other_field3%TYPE Default NULL,
    -- Bill To Data
    p_BILL_TO_NAME IN CONT_ADDRESS.NAME%TYPE                Default NULL, --VC(50)
    p_BILL_TO_ADDRESS1 IN CONT_ADDRESS.ADDRESS1%TYPE           Default NULL, --VC(50)
    p_BILL_TO_ADDRESS2 IN CONT_ADDRESS.ADDRESS2%TYPE           Default NULL, --VC(50)
    p_BILL_TO_CITY IN CONT_ADDRESS.CITY%TYPE                Default NULL, --VC(50)
    p_Bill_To_County IN CONT_ADDRESS.COUNTY%TYPE Default NULL, --VC(50)
    p_BILL_TO_STATE IN CONT_ADDRESS.STATE%TYPE Default NULL, --VC(25)
    p_BILL_TO_ZIP IN CONT_ADDRESS.POSTAL_CODE%TYPE Default NULL, --VC(20)
    p_BILL_TO_COUNTRY IN CONT_ADDRESS.COUNTRY%TYPE           Default NULL, --VC(50)
    p_BILL_TO_GEOCODE IN CONT_ADDRESS.GEOCODE%TYPE           Default NULL, --VC(15)
    p_BILL_TO_BUS_OR_RES_FLAG IN CONT_ADDRESS.BUS_OR_RES_FLAG%TYPE Default NULL, --VC(1)
    p_BILL_TO_INSIDE_CORP_FLAG IN CONT_ADDRESS.INSIDE_CORP_FLAG%TYPE Default NULL, --VC(1)
    p_TAX_REGION_ID IN CONT_CUST.TAX_REGION_ID%TYPE Default NULL, --VN(10,0)
    -- Credit Score Data
    p_SOC_SEC_NUM            IN CUSTOMERS_INFO.SOC_SEC_NUM%TYPE                Default NULL,  VC(20)
    p_ID_OR_DANDB_TYPE IN CUSTOMERS_INFO.ID_METHOD%TYPE           Default NULL, --VC(50)
    p_ID_REGION IN CUSTOMERS_INFO.ID_REGION%TYPE           Default NULL, --VC(25)
    p_ID_OR_DANB_NO          IN CUSTOMERS_INFO.IDENTIFICATION_NO%TYPE          Default NULL,  VC(25)
    p_TAX_ID IN CUSTOMERS_INFO.IDENTIFICATION_NO%TYPE Default NULL, --VC(25)
    p_DRIVER_LICENSE_NO IN CUSTOMERS_INFO.DRIVER_LICENSE_NO%TYPE Default NULL, --VC(25)
    p_PHOTO_ID_VALUE IN CUSTOMERS_INFO.PHOTO_ID_VALUE%TYPE Default NULL, --VC(25)
    p_PHOTO_ID_STATE IN CUSTOMERS_INFO.PHOTO_ID_STATE%TYPE Default NULL, --VC(25)
    pc_BIRTH_DATE IN Varchar2      Default NULL,
    p_ORIG_INTERNAL_SCORE IN CUSTOMERS_INFO.CREDIT_SCORE%TYPE      Default NULL, --VC(10)
    p_INTERNAL_SCORE IN CUSTOMERS_INFO.INTERNAL_CREDIT_SCORE%TYPE     Default NULL, --VC(10)
    p_CRED_SCORE_ADDRESS1 IN CUSTOMERS_INFO.ADDRESS1%TYPE          Default NULL, --VC(100)
    p_CRED_SCORE_ADDRESS2 IN CUSTOMERS_INFO.ADDRESS2%TYPE           Default NULL, --VC(100)
    p_CRED_SCORE_CITY IN CUSTOMERS_INFO.ADDRESS3%TYPE           Default NULL, --VC(100)
    p_CRED_SCORE_COUNTY IN CUSTOMERS_INFO.ADDRESS4%TYPE Default NULL, --VC(100)
    p_CRED_SCORE_STATE IN CUSTOMERS_INFO.ADDRESS5%TYPE           Default NULL, --VC(100)
    p_CRED_SCORE_ZIP IN CUSTOMERS_INFO.ADDRESS6%TYPE           Default NULL, --VC(100)
    p_CRED_SCORE_COUNTRY       IN CUSTOMERS_INFO.ADDRESS6%TYPE                      Default NULL,  VC(100)
    p_IntScore_Override_Date   IN CUSTOMERS_INFO.OTHER_FIELD19%TYPE       Default NULL,  N/A
    pc_CURR_ADDRESS_DATE IN Varchar2 Default NULL,
    p_PREV_ADDRESS1 IN CUSTOMERS_INFO.PREV_ADDRESS1%TYPE      Default NULL, --VC(50)
    p_PREV_ADDRESS2 IN CUSTOMERS_INFO.PREV_ADDRESS2%TYPE      Default NULL, --VC(50)
    p_PREV_CITY IN CUSTOMERS_INFO.PREV_CITY%TYPE           Default NULL, --VC(50)
    p_PREV_COUNTY IN CUSTOMERS_INFO.PREV_COUNTY%TYPE Default NULL, --VC(50)
    p_PREV_STATE IN CUSTOMERS_INFO.PREV_STATE%TYPE           Default NULL, --VC(25)
    p_PREV_ZIP IN CUSTOMERS_INFO.PREV_POSTAL_CODE%TYPE Default NULL, --VC(20)
    p_PREV_COUNTRY IN CUSTOMERS_INFO.PREV_COUNTRY%TYPE      Default NULL, --VC(25)
    -- Billing Settings
    p_BillCycle IN CONT_CUST.BILLCYCLE%TYPE Default 0,
    p_BILL_BY_EMAIL IN CUSTOMERS_INFO.BILL_BY_EMAIL%TYPE Default 'N', --VC(1)
    p_DETAIL_BILLING IN CONT_CUST.DETAIL_BILLING%TYPE      Default 'Y', --VC(1)
    p_BILL_LANGUAGE_ID IN CONT_CUST.BILL_LANGUAGE_ID%TYPE Default NULL, --VN(10,0)
    p_BILL_LAYOUT_ID IN CONT_CUST.BILL_LAYOUT_ID%TYPE      Default NULL, --VN(10,0)
    p_BILL_CURRENCY_ID IN CONT_CUST.BILL_CURRENCY_ID%TYPE Default NULL, --VN(10,0)
    p_FIXED_CURRENCY IN CONT_CUST.FIXED_CURRENCY%TYPE      Default NULL, --VC(1)
    p_APPLY_LATE_FEES IN CONT_CUST.APPLY_LATE_FEES%TYPE      Default NULL, --VC(1)
    p_USAGE_THRESHOLD IN CONT_CUST.USAGE_THRESHOLD%TYPE Default NULL, --VN(15,2)
    -- Payment Data
    p_AUTO_PAYMENT_FLAG IN CONT_PAYMENTS_INFO.AUTO_PAYMENT_FLAG%TYPE Default NULL, --VC(1)
    p_PAYMENT_METHOD IN CONT_PAYMENTS_INFO.PAYMENT_METHOD%TYPE      Default NULL, --VC(10)
    p_DEF_PAY_BANK_NAME IN CONT_PAYMENTS_INFO.BANK_NAME%TYPE      Default NULL, --VC(100)
    p_DEF_PAY_OWNER_NAME IN CONT_PAYMENTS_INFO.OWNER_NAME%TYPE      Default NULL, --VC(100)
    p_DEF_PAY_CARD_ADDRESS IN CONT_PAYMENTS_INFO.OWNER_ADDRESS%TYPE      Default NULL, --VC(100)
    P_DEF_PAY_ADDRESS2 IN CONT_PAYMENTS_INFO.OWNER_ADDRESS%TYPE Default NULL,
    P_DEF_PAY_CITY IN CONT_PAYMENTS_INFO.OWNER_ADDRESS%TYPE Default NULL,
    P_DEF_PAY_COUNTY IN CONT_PAYMENTS_INFO.OWNER_ADDRESS%TYPE Default NULL,
    P_DEF_PAY_STATE IN CONT_PAYMENTS_INFO.OWNER_ADDRESS%TYPE Default NULL,
    p_DEF_PAY_CARD_NUMBER IN CONT_PAYMENTS_INFO.BANK_CC_NUMBER%TYPE      Default NULL, --VC(50)
    p_DEF_PAY_CARD_TYPE IN CONT_PAYMENTS_INFO.CC_CARD_TYPE_ID%TYPE Default NULL, --VC(10)
    pc_DEF_PAY_CARD_EXPIRES IN Varchar2 Default NULL,
    p_DEF_PAY_AMEX_CID IN CONT_PAYMENTS_INFO.CC_AMEX_CID%TYPE      Default NULL, --VC(50)
    p_DEF_PAY_ZIP IN CONT_PAYMENTS_INFO.CARDHOLDER_POSTAL_CODE%TYPE Default NULL, --VC(10)
    P_DEF_PAY_ROUTING_NO IN CONT_PAYMENTS_INFO.ABA%TYPE Default NULL,
    P_DEF_CHK_ACCOUNT_TYPE IN CONT_PAYMENTS_INFO.ACCOUNT_TYPE%TYPE Default NULL,
    p_DEF_PAY_CARD_CCV2 IN CONT_PAYMENTS_INFO.CC_CCV2_NUMBER%TYPE Default NULL,
    -- Other
    p_SALES_REP_FLAG IN CUSTOMERS_INFO.SALES_REP_FLAG%TYPE Default NULL, --VC(1)
    pc_ACT_DATE IN Varchar2 Default NULL,
    pc_ENTRY_DATE IN Varchar2 Default NULL,
    p_STATUS IN CONT_CUST.ACCOUNT_STATUS%TYPE Default NULL,
    -- Credit Control
    p_Credit_Category IN CONT_CCTRL_INFO.Credit_Category%TYPE Default NULL,
    p_Credit_Risk IN CONT_CCTRL_INFO.Credit_Risk%TYPE Default NULL,
    p_Credit_Status IN CONT_CCTRL_INFO.Credit_Status%TYPE Default NULL,
    pc_PTP_Date IN Varchar2 Default NULL,
    p_RECEIVE_SMS_FLAG IN CONT_CCTRL_INFO.RECEIVE_SMS_FLAG%TYPE Default NULL,
    p_AUTO_RECONNECT_FLAG IN CONT_CCTRL_INFO.AUTO_RECONNECT_FLAG%TYPE Default NULL,
    p_CCTRL_BYPASS_FLAG IN CONT_CCTRL_INFO.CCTRL_BYPASS_FLAG%TYPE Default NULL,
    p_Excel_LD_Flag IN CUSTOMERS_INFO.other_field5%TYPE Default NULL,
    P_VIP_Type IN CUSTOMERS_INFO.other_field6%TYPE Default NULL,
    P_CPNI_FLAG IN CUSTOMERS_INFO.OTHER_FIELD9%TYPE Default NULL,
    p_Promo_Id IN Varchar2 Default NULL,
    p_Carrier_Id IN CONT_CUST.CARRIER_ID%TYPE Default NULL,
    p_Category_ID IN CONT_CUST.Category_ID%TYPE Default NULL,
    p_MTA_ID IN CONT_CUST.MTA_ID%TYPE Default 1,
    p_REQUIRED_DEPOSIT_AMT IN CUSTOMERS_INFO.OTHER_FIELD11%TYPE Default NULL,
    p_PREPAY_FLAG IN CONT_CUST.PREPAY_FLAG%TYPE Default NULL,
    P_ALT_ACCOUNT_NO2 IN CUSTOMERS_INFO.OTHER_FIELD12%TYPE Default NULL,
    P_EWAVE_CREDIT_SCORE IN CUSTOMERS_INFO.OTHER_FIELD13%TYPE Default NULL,
    P_EWAVE_APPLICATION_NO IN CUSTOMERS_INFO.OTHER_FIELD14%TYPE Default NULL,
    P_ALT_OWNER_NAME IN CUSTOMERS_INFO.ALT_OWNER_NAME%TYPE Default NULL,
    P_ALT_OWNER_PASSWORD IN CUSTOMERS_INFO.ALT_OWNER_PASSWORD%TYPE Default NULL,
    P_SALES_REP_ID IN CUSTOMERS_INFO.SALES_REP_ID%TYPE Default NULL,
    P_SALES_REP_EMAIL IN CUSTOMERS_INFO.SALES_REP_EMAIL%TYPE Default NULL
    IS
    ---------0---------0---------0---------0---------0---------0---------0--------80
    -- PURPOSE : Creates a NEW Account
    -- PARAMETERS : See above.
    -- NOTES :
    -- RETURN : 1) If successfull ................: Contract_Id
    -- 2) If a logical error then .......: ' ' (1 space)
    -- ERROR : If an exception error..........: 'p_error_return = sqlerrm.........'
    -- MODIFICATION HISTORY :
    -- Person Date Comments
    -- Mary Phan Jun 15, 2004 Init version. This procedure will execute procedure D_ACCT_NEW
    -- Mary Phan Jul 07, 2004 Add SALES_REP_ID and SALES_REP_EMAIL
    -- Subas Sep 07, 2005 Modified for ECAM
    -- Subas Sep 19, 2005 Added code to insert a blank record in CONT_MISC_DATA
    cc_PROC_NAME Varchar2(30):='D_ACCT_NEW';
    vc_SECTION Varchar2(10):='000';
    vn_Count Number;
    R_CCTRL_INFO_REC CONT_CCTRL_INFO%ROWTYPE;
    R_CI_REC CUSTOMERS_INFO%ROWTYPE;
    R_CC_REC CONT_CUST%ROWTYPE;
    R_CA_REC CONT_ADDRESS%ROWTYPE;
    R_CPI_REC CONT_PAYMENTS_INFO%ROWTYPE;
    vn_Customer_Id CONT_CUST.CUSTOMER_ID%TYPE;
    vn_Contract_Id CONT_CUST.CONTRACT_ID%TYPE;
    vc_bill_to_name CONT_ADDRESS.NAME%TYPE;
    vd_act_date CONT_CUST.ACT_DATE%TYPE;
    vn_BillCycle CONT_CUST.BILLCYCLE%TYPE;
    vc_Credit_Risk CONT_CCTRL_INFO.CREDIT_RISK%TYPE;
    vn_PARENT_CONTRACT_ID CONT_CUST.PARENT_CONTRACT_ID%TYPE;
    BEGIN
    vc_SECTION:='010';
    -- CHECK FOR CUSTOMER TYPE :
    IF UPPER(p_cust_type) NOT IN ('I','B') THEN
    Raise_Application_Error(-20100,'Customer type may be either "I" or "B"');
    END IF;
    -- CHECK FOR CUSTOMER NAME :
    IF UPPER(p_cust_type)='I' THEN
    IF ltrim(rtrim(p_contact_f_name)) is NULL THEN
    Raise_Application_Error(-20100,'Customer Name can not be a NULL Value');
    END IF;
    ELSIF UPPER(p_cust_type)='B' THEN
    IF ltrim(rtrim(p_company_name)) is NULL THEN
    Raise_Application_Error(-20100,'Company Name can not be a NULL Value');
    END IF;
    END IF;
    -- CHECK FOR BILL BY EMAIL :
    IF UPPER(p_bill_by_email)='Y' THEN
    IF p_EMAIL_ADDRESS is NULL THEN
    Raise_Application_Error(-20100,'Email Address cannot be a NULL Value');
    END IF;
    END IF;
    -- ASSIGN VALUES TO BILL_TO_NAME :
    vc_Bill_To_Name := ltrim(rtrim(p_BILL_TO_NAME));
    IF vc_Bill_To_Name IS NULL THEN
    IF UPPER(p_cust_type)='I' THEN
    vc_bill_to_name:=p_CONTACT_F_NAME||' '||
    p_CONTACT_MIDDLE_INITIAL||' '||
    p_CONTACT_L_NAME;
    ELSIF UPPER(p_cust_type)='B' THEN
    vc_bill_to_name:=p_COMPANY_NAME;
    END IF;
    END IF;
    -- Check for Minimum Address Requirement:
    IF p_BILL_TO_ADDRESS1 is NULL THEN
    Raise_Application_Error(-20100,'BILL TO Address cannot be a NULL Value');
    END IF;
    -- Determine Default values:
    IF pc_ACT_DATE IS NULL THEN
    vd_act_date:=sysdate;
    ELSE
    vd_act_date:=trunc(to_date(pc_ACT_DATE, 'yyyymmddhh24miss'));
    END IF;
    -- Assign BILLCYCLE:
    vn_BillCycle := p_BillCycle;
    IF vn_BillCycle = 0 THEN
    vn_BillCycle := C_UTIL_GET_DEF_BILLCYCLE (p_Carrier_Id);
    END IF;
    IF NVL(vn_Billcycle,0) = 0 then
    Raise_Application_Error(-20100,'Can not find a valid BILLCYCLE ');
    END IF;
    -- Get Customer_Id and Contract_ID from SEQUENCES :
    select contract_id_sequence.nextval into vn_Contract_Id from dual;
    select customer_id_sequence.nextval into vn_Customer_Id from dual;
    --INSERT RECORDS TO CUSTOMERS_INFO :
    vc_SECTION:='020';
    R_CI_REC.CUSTOMER_ID := vn_Customer_Id;
    R_CI_REC.FIRST_NAME := p_CONTACT_F_NAME;
    R_CI_REC.LAST_NAME := p_CONTACT_L_NAME;
    R_CI_REC.MIDDLE_INIT := p_CONTACT_MIDDLE_INITIAL;
    R_CI_REC.ADDRESS1 := p_CRED_SCORE_ADDRESS1;
    R_CI_REC.ADDRESS2 := p_CRED_SCORE_ADDRESS2;
    R_CI_REC.ADDRESS3 := p_CRED_SCORE_CITY;
    R_CI_REC.ADDRESS4 := p_CRED_SCORE_COUNTY;
    R_CI_REC.ADDRESS5 := p_CRED_SCORE_STATE;
    R_CI_REC.ADDRESS6 := p_CRED_SCORE_ZIP;
    --R_CI_REC.ADDRESS6                   := p_CRED_SCORE_Country;
    R_CI_REC.OTHER_FIELD1 := P_Contact_Name1;
    R_CI_REC.OTHER_FIELD2 := P_Contact_Name2;
    R_CI_REC.OTHER_FIELD3 := P_Contact_Name3;
    R_CI_REC.OTHER_FIELD4 := 0;
    R_CI_REC.OTHER_FIELD5 := p_Excel_LD_Flag;
    R_CI_REC.OTHER_FIELD6 := P_VIP_Type;
    R_CI_REC.OTHER_FIELD7 := NULL;
    R_CI_REC.OTHER_FIELD8 := NULL;
    R_CI_REC.OTHER_FIELD9 := P_CPNI_FLAG;
    R_CI_REC.OTHER_FIELD10 := P_PROMO_ID;
    R_CI_REC.OTHER_FIELD11 := P_REQUIRED_DEPOSIT_AMT;
    R_CI_REC.OTHER_FIELD12 := P_ALT_ACCOUNT_NO2;
    R_CI_REC.OTHER_FIELD13 := P_EWAVE_CREDIT_SCORE;
    R_CI_REC.OTHER_FIELD14 := P_EWAVE_APPLICATION_NO;
    R_CI_REC.OTHER_FIELD15 := NULL;
    R_CI_REC.OTHER_FIELD16 := NULL;
    R_CI_REC.OTHER_FIELD17 := NULL;
    R_CI_REC.OTHER_FIELD18 := NULL;
    R_CI_REC.OTHER_FIELD19 := NULL;
    R_CI_REC.OTHER_FIELD20 := NULL;
    R_CI_REC.EMAIL_ADDRESS := p_EMAIL_ADDRESS;
    R_CI_REC.BILL_BY_EMAIL := NVL(p_BILL_BY_EMAIL,B_UTIL_DEFSTRVAL('ACCOUNT','BILL_BY_EMAIL'));
    R_CI_REC.CUST_TYPE := p_CUST_TYPE;
    R_CI_REC.COMPANY_NAME := p_COMPANY_NAME;
    R_CI_REC.IDENTIFICATION_NO := p_TAX_ID;
    R_CI_REC.DRIVER_LICENSE_NO := p_DRIVER_LICENSE_NO;
    R_CI_REC.PHOTO_ID_VALUE := p_PHOTO_ID_VALUE;
    R_CI_REC.PHOTO_ID_STATE := p_PHOTO_ID_STATE;
    R_CI_REC.COUNTRY_ID := p_COUNTRY_ID;
    ---R_CI_REC.SOC_SEC_NUM := p_SOC_SEC_NUM;
    R_CI_REC.ID_METHOD := p_ID_OR_DANDB_TYPE;
    R_CI_REC.ID_VALUE := NULL;
    R_CI_REC.ID_REGION := p_ID_REGION;
    R_CI_REC.BIRTH_DATE := to_date(pc_Birth_Date, 'yyyymmddHH24MISS');
    R_CI_REC.HOME_PHONE_NUM := p_HOME_PHONE_NUM;
    R_CI_REC.BUSINESS_PHONE_NUM := p_BUSINESS_PHONE_NUM;
    R_CI_REC.CURR_ADDRESS_DATE := to_date(pc_Curr_Address_Date,'yyyymmddHH24MISS');
    R_CI_REC.PREV_ADDRESS1 := p_PREV_ADDRESS1;
    R_CI_REC.PREV_ADDRESS2 := p_PREV_ADDRESS2;
    R_CI_REC.PREV_CITY := p_PREV_CITY;
    R_CI_REC.PREV_COUNTY := p_PREV_COUNTY;
    R_CI_REC.PREV_STATE := p_PREV_STATE;
    R_CI_REC.PREV_POSTAL_CODE := p_PREV_ZIP;
    R_CI_REC.PREV_COUNTRY := p_PREV_COUNTRY;
    R_CI_REC.CREDIT_SCORE := p_ORIG_INTERNAL_SCORE;
    R_CI_REC.INTERNAL_CREDIT_SCORE := UPPER(p_INTERNAL_SCORE);
    R_CI_REC.INTERNAL_CREDIT_SCORE_DATE := SYSDATE;
    R_CI_REC.SALES_REP_FLAG := p_SALES_REP_FLAG;
    R_CI_REC.NAME_TITLE := p_CONTACT_TITLE;
    R_CI_REC.NAME_SUFFIX := P_CONTACT_SUFFIX;
    R_CI_REC.CREATION_DATE := SYSDATE;
    R_CI_REC.ALT_OWNER_NAME := P_ALT_OWNER_NAME;
    R_CI_REC.ALT_OWNER_PASSWORD := P_ALT_OWNER_PASSWORD;
    R_CI_REC.SALES_REP_ID := P_SALES_REP_ID;
    R_CI_REC.SALES_REP_EMAIL := P_SALES_REP_EMAIL;
    R_CI_REC.LAST_MODIFIED_DATE := SYSDATE;
    R_CI_REC.LAST_MODIFIED_BY := P_USERNAME;
    D_INS_UPD_CUSTINFO(p_Return,p_Error_Return,p_UserName,'INS',R_CI_REC);
    --INSERT RECORDS INTO CONT_CUST :
    vc_SECTION:='030';
    SELECT DECODE(P_PARENT_CONTRACT_ID,NULL,VN_CONTRACT_ID,P_PARENT_CONTRACT_ID)
    INTO VN_PARENT_CONTRACT_ID
    FROM DUAL;
    R_CC_REC.CONTRACT_ID := vn_Contract_Id;
    R_CC_REC.ACCOUNT_NO := vn_Contract_Id;
    R_CC_REC.CUSTOMER_ID := vn_customer_id;
    R_CC_REC.RP_ID := 0;
    R_CC_REC.MTA_ID := p_MTA_ID;
    R_CC_REC.TAX_REGION_ID := p_TAX_REGION_ID;
    R_CC_REC.ACT_DATE := trunc(vd_act_date);
    R_CC_REC.BILLCYCLE := vn_Billcycle;
    R_CC_REC.LAST_BILL_DATE := trunc(vd_act_date-1);
    R_CC_REC.DEACT_DATE := NULL;
    R_CC_REC.ENTRY_DATE := NVL(to_date(pc_ENTRY_DATE,'yyyymmddhh24miss'),SYSDATE);
    R_CC_REC.ENTRY_BY := p_UserName;
    R_CC_REC.OPEN_BALANCE := 0;
    R_CC_REC.PREPAY_FLAG := P_PREPAY_FLAG;
    R_CC_REC.USAGE_THRESHOLD := NVL(p_USAGE_THRESHOLD,
    B_UTIL_GET_CREDIT_LIMIT(P_Internal_Credit_Score=>UPPER(p_INTERNAL_SCORE),
    p_Contract_Type=>'ACCOUNT'));
    R_CC_REC.PMM_CUR_BALANCE := NULL;
    R_CC_REC.SUB_ACCOUNT_ID := 0;
    R_CC_REC.CATEGORY_ID := p_Category_ID;
    R_CC_REC.DEACT_REASON_ID := NULL;
    R_CC_REC.DETAIL_BILLING := NVL(P_DETAIL_BILLING,B_UTIL_DEFSTRVAL('ACCOUNT','DETAIL_BILLING'));
    R_CC_REC.CARRIER_ID := NVL(p_carrier_id,1);
    R_CC_REC.BILL_LANGUAGE_ID := NVL(p_BILL_LANGUAGE_ID,B_UTIL_DEFSTRVAL('ACCOUNT','BILL_LANGUAGE_ID'));
    R_CC_REC.BILL_LAYOUT_ID := NVL(p_BILL_LAYOUT_ID,B_UTIL_DEFSTRVAL('ACCOUNT','BILL_LAYOUT_ID'));
    R_CC_REC.BILL_CURRENCY_ID := NVL(p_BILL_CURRENCY_ID,B_UTIL_DEFSTRVAL('ACCOUNT','BILL_CURRENCY_ID'));
    R_CC_REC.FIXED_CURRENCY := NVL(p_FIXED_CURRENCY,B_UTIL_DEFSTRVAL('ACCOUNT','FIXED_CURRENCY'));
    R_CC_REC.APPLY_LATE_FEES := NVL(p_APPLY_LATE_FEES,B_UTIL_DEFSTRVAL('ACCOUNT','APPLY_LATE_FEES'));
    R_CC_REC.PARENT_CONTRACT_ID := VN_PARENT_CONTRACT_ID;
    R_CC_REC.LEVEL_NO := 0;
    R_CC_REC.AP_FLAG := 'Y';
    R_CC_REC.RESTRICTION_CLASS_ID := NULL;
    R_CC_REC.OMM_UPDATE_FLAG := 'N';
    R_CC_REC.INACTIVE_FLAG := 'N';
    R_CC_REC.SWITCH_PROFILE := NULL;
    R_CC_REC.ALT_ACCOUNT_NO := p_ALT_ACCOUNT_NO;
    R_CC_REC.ALT_SUB_ACCOUNT_ID := p_ALT_SUB_ACCOUNT_ID;
    R_CC_REC.DEPOSITED_AMT := NULL;
    R_CC_REC.READY_TO_ACT := NULL;
    R_CC_REC.ACCOUNT_STATUS := NVL(p_STATUS,'SHELL');
    R_CC_REC.EARLY_TERMINATION_FEE := NULL;
    R_CC_REC.EARLY_TERMINATION_DATE := NULL;
    R_CC_REC.SALES_REP_ID := NULL;
    R_CC_REC.MANUAL_OMM_ACTIVATE := NULL;
    R_CC_REC.PERMANENT_USAGE_THRESHOLD := R_CC_REC.USAGE_THRESHOLD;
    D_INS_UPD_CONTCUST(p_Return,p_Error_Return,p_UserName,'INS',R_CC_REC);
    --INSERT RECORDS INTO CONT_PAYMENT_INFO :
    vc_SECTION:='040';
    R_CPI_REC.CONTRACT_ID := vn_Contract_Id;
    R_CPI_REC.AUTO_PAYMENT_FLAG := NVL(p_AUTO_PAYMENT_FLAG,B_UTIL_DEFSTRVAL('ACCOUNT','AUTO_PAYMENT_FLAG'));
    R_CPI_REC.PAYMENT_METHOD := NVL(p_PAYMENT_METHOD,'CASH');
    R_CPI_REC.BANK_NAME := p_DEF_PAY_BANK_NAME;
    R_CPI_REC.OWNER_NAME := p_DEF_PAY_OWNER_NAME;
    R_CPI_REC.OWNER_ADDRESS := p_DEF_PAY_CARD_ADDRESS;
    R_CPI_REC.OWNER_ADDRESS2 := p_DEF_PAY_ADDRESS2;
    R_CPI_REC.OWNER_CITY := p_DEF_PAY_CITY;
    R_CPI_REC.OWNER_COUNTY := p_DEF_PAY_COUNTY;
    R_CPI_REC.OWNER_STATE := p_DEF_PAY_STATE;
    R_CPI_REC.BANK_CC_NUMBER := p_DEF_PAY_CARD_NUMBER;
    R_CPI_REC.CC_CARD_TYPE_ID := p_DEF_PAY_CARD_TYPE;
    R_CPI_REC.CC_EXPIRATION_DATE := to_date(pc_DEF_PAY_CARD_EXPIRES,'YYYYMMDDHH24MISS');
    R_CPI_REC.CC_AMEX_CID := p_DEF_PAY_AMEX_CID;
    R_CPI_REC.CC_AUTH_NUMBER := NULL;
    R_CPI_REC.CC_AUTH_REQUEST_AMOUNT := NULL;
    R_CPI_REC.CC_AUTH_AMOUNT := NULL;
    R_CPI_REC.CC_AUTH_DATE := NULL;
    R_CPI_REC.CARDHOLDER_POSTAL_CODE := p_DEF_PAY_ZIP;
    R_CPI_REC.ABA := P_DEF_PAY_ROUTING_NO;
    R_CPI_REC.ACCOUNT_TYPE := P_DEF_CHK_ACCOUNT_TYPE;
    R_CPI_REC.CC_CCV2_NUMBER := p_DEF_PAY_CARD_CCV2;
    R_CPI_REC.LAST_MODIFIED_DATE := SYSDATE;
    R_CPI_REC.LAST_MODIFIED_BY := P_USERNAME;
    D_INS_UPD_CONTPAYMENTSINFO(p_Return,p_Error_Return,p_UserName,'INS',R_CPI_REC);
    --INSERT RECORDS INTO CONT_ADDRESS
    vc_SECTION:='050';
    R_CA_REC.CONTRACT_ID := vn_Contract_id;
    R_CA_REC.ADDRESS_TYPE := 'B';
    R_CA_REC.NAME := vc_bill_to_name;
    R_CA_REC.ADDRESS1 := p_BILL_TO_ADDRESS1;
    R_CA_REC.ADDRESS2 := p_BILL_TO_ADDRESS2;
    R_CA_REC.CITY := p_BILL_TO_CITY;
    R_CA_REC.COUNTY := P_BILL_TO_COUNTY;
    R_CA_REC.STATE := p_BILL_TO_STATE;
    R_CA_REC.POSTAL_CODE := p_BILL_TO_ZIP;
    R_CA_REC.COUNTRY := P_BILL_TO_COUNTRY;
    R_CA_REC.GEOCODE := p_BILL_TO_GEOCODE;
    R_CA_REC.BUS_OR_RES_FLAG := p_BILL_TO_BUS_OR_RES_FLAG;
    R_CA_REC.INSIDE_CORP_FLAG := p_BILL_TO_INSIDE_CORP_FLAG;
    D_INS_UPD_CONTADDRESS(p_Return,p_Error_Return,p_UserName,'INS',R_CA_REC);
    -- INSERT RECORD INTO CONT_CCTRL_INFO :
    vc_SECTION:='060';
    IF p_Credit_Risk is not NULL then
    vc_Credit_Risk := p_Credit_Risk ;
    ELSE
    IF R_CI_REC.INTERNAL_CREDIT_SCORE IS NULL THEN
    vc_Credit_Risk := 'High';
    ELSIF R_CI_REC.INTERNAL_CREDIT_SCORE IN ('A','B') THEN
    vc_Credit_Risk := 'Low';
    ELSIF R_CI_REC.INTERNAL_CREDIT_SCORE = 'C' THEN
    vc_Credit_Risk := 'Medium';
    ELSE
    vc_Credit_Risk := 'High';
    END IF;
    END IF;
    R_CCTRL_INFO_REC.CONTRACT_ID := vn_CONTRACT_ID;
    R_CCTRL_INFO_REC.ENTRY_BY := p_UserName;
    R_CCTRL_INFO_REC.CREDIT_RISK := vc_Credit_Risk;
    R_CCTRL_INFO_REC.CREDIT_CATEGORY := NVL(p_Credit_CATEGORY,B_UTIL_DEFSTRVAL('ACCOUNT','CREDIT_CATEGORY'));
    R_CCTRL_INFO_REC.CREDIT_STATUS := NVL(p_Credit_STATUS,B_UTIL_DEFSTRVAL('ACCOUNT','CREDIT_STATUS'));
    R_CCTRL_INFO_REC.PTP_DATE := to_date(pc_PTP_Date,'yyyymmddhh24miss');
    R_CCTRL_INFO_REC.RECEIVE_SMS_FLAG := 'N';
    R_CCTRL_INFO_REC.AUTO_RECONNECT_FLAG := NVL(p_AUTO_RECONNECT_FLAG,'Y');
    R_CCTRL_INFO_REC.CCTRL_BYPASS_FLAG := NVL(p_CCTRL_BYPASS_FLAG,'N');
    R_CCTRL_INFO_REC.LAST_MODIFIED_BY := p_UserName;
    R_CCTRL_INFO_REC.LAST_MODIFIED_DATE := SYSDATE;
    D_INS_UPD_CONTCCTRLINFO(P_Return,P_Error_Return,p_UserName,'INS',R_CCTRL_INFO_REC);
    -- INSERT RECORD INTO CONT_MISC_DATA :
    vc_SECTION:='070';
    INSERT INTO CONT_MISC_DATA
    (CONTRACT_ID)
    VALUES
    (vn_Contract_Id);
    p_Return := vn_Contract_Id;
    EXCEPTION
    WHEN others THEN
    p_Return:='';
    p_Error_Return :=cc_PROC_NAME||' '|| vc_SECTION||':'|| SUBSTR(sqlerrm,1,300);
    END; -- D_ACCT_NEW

  • Trapping error in stored procedure

    Hi all,
    I forms 6i application development, i mostly called backend procedure ( Stored procedure ).
    problem is how can i trap error which occured in procedure in my Oracle forms application.
    Tell me different methods to solve this problem
    I'am working in Oracle 8 and Forms 6i for windows NT 4.0
    Regards,
    Seema shah

    user21354 wrote:
    i am creating the collection in my Stored procedure it is giving me this error
    declare
    type t_number is table of number;
    v_numbers t_number;
    begin
    select VISIT_ID
    bulk collect into v_numbers
    from visit
    where VISITTYPEID = 2;
    select VISIT_ID from v_numbers;
    end;
    error
    PL/SQL: ORA-00942: table or view does not exist
    please tell me this why this happeningcouple of things...
    context switching - Your second 'select visit_id' query is actually parsed outside plsql, in the 'sql engine'. This sql engine has no knowledge of what v_numbers is, it's expecting an actual table name but it can't find anything called v_numbers in it's metadata. So it bombs out with that error. Google 'context switching plsql' for more info. :o)
    - as v_numbers is a collection, you could just loop through the results:
      for n in 1..v_numbers.count
      loop
        dbms_output.put_line(v_numbers(n));
      end loop;- as stated above, a 'select' without 'into' won't work in plsql anyway.
    - there is a way of getting round the context switch, by creating your Type in sql rather than plsql and 'casting' it to a table. Let us know if you want to know the steps to do it, but try reading up on context switch first.
    cheers.

  • ORA-01422 Error While Doing Insert

    Hello,
    I am trying to do a insert using the following code
    declare
    i number;
    ret varchar2(1000);
    ret2 varchar2(1000);
    ret3 varchar2(1000);
    begin
    FOR I IN 1..20 LOOP
    select sl_no ,ename,addr into ret,ret2,ret3
    from
    (select u.sl_no as sl_no,
    (select ename from table where sl=1  and des  = 1 ) as ename ,
    T.addr as addr  from
    tab1 t,tab2  u
    where
    U.cd = T.cd
    and U.code = T.code and U.sl=0+i
    union all
    select u.sl_no as sl_no,
    (select ename from table where sl=1  and des  = 1 ) as ename ,
    T.addr as addr  from
    tab1 t,tab2  u
    where
    U.cd = T.cd
    and U.code = T.code and U.sl=0+i);However I am getting error
    ORA-01422: exact fetch returns more than requested number of rowsHow could I resolve this problem
    Thanks

    @OP,
    Some of the points in your "FULL CODE".
    1.You are selecting in a FOR I 1..20 LOOP... The SELECT statement has INTO clause. With UNION (ALL) may be you are expecting (and getting) more than one row in which case you need to define cursor and fetch from the cursor .
    2. You have a COMMIT within the loop, it may be ok if you want to commit 20 times! In general, Please commit when the logical unit of work (LUW) is completed. In my experience LUW is normally not completed within a loop.
    3. Why even have a LOOP and PL/SQL procedural code?
    Why not do the following...
    insert into my_table(sl_no,ename,addr)
    select sl_no ,ename,addr into ret,ret2,ret3
         from
         (select u.sl_no as sl_no,
         (select ename from table where sl=1  and des  = 1 ) as ename ,
         T.addr as addr  from
         tab1 t,tab2  u
         where
         U.cd = T.cd
         and U.code = T.code and U.sl=0+i
         union all
         select u.sl_no as sl_no,
         (select ename from table where sl=1  and des  = 1 ) as ename ,
         T.addr as addr  from
         tab1 t,tab2  u
         where
         U.cd = T.cd
         and U.code = T.code and U.sl=0+i);4. If you absolutely have to have PL/SQL code try something like folloing...
    declare
    i number;
    ret varchar2(1000);
    ret2 varchar2(1000);
    ret3 varchar2(1000);
    begin
    FOR I IN 1..20 LOOP
      FOR x in (              -- "Added"
         select sl_no ,ename,addr into ret,ret2,ret3
         from
         (select u.sl_no as sl_no,
         (select ename from table where sl=1  and des  = 1 ) as ename ,
         T.addr as addr  from
         tab1 t,tab2  u
         where
         U.cd = T.cd
         and U.code = T.code and U.sl=0+i
         union all
         select u.sl_no as sl_no,
         (select ename from table where sl=1  and des  = 1 ) as ename ,
         T.addr as addr  from
         tab1 t,tab2  u
         where
         U.cd = T.cd
         and U.code = T.code and U.sl=0+i)
       LOOP ;                -- "Added"
       insert into my_table(sl_no,ename,addr)
       values (ret,ret2,ret3);
    end loop;               -- "Added"
    commit;
    end loop;
    end;vr,
    Sudhakar B.

  • ORA-01422 error

    Hello,
    I am very new about oracle and I have a problem. I am using stored procedure like this;
    CREATE OR REPLACE PROCEDURE SP_SELECTKISIBYUSERNAME
    MY_AD OUT VARCHAR2,
    MY_SOYAD OUT VARCHAR2,
    MY_KULLANICIADI OUT VARCHAR2,
    MY_SCLNO OUT NUMBER,
    KullaniciAdi IN VARCHAR2
    AS
    BEGIN
    SELECT IKY_OZLUK.SCLNO, IKY_OZLUK.AD, IKY_OZLUK.SOYAD, IKY_KULLANICI.KULLANICIADI INTO MY_SCLNO,MY_AD,MY_SOYAD,MY_KULLANICIADI
         FROM IKY_KULLANICI , IKY_OZLUK
         WHERE IKY_KULLANICI.SCLNO=IKY_OZLUK.SCLNO
         AND IKY_KULLANICI.KULLANICIADI = KullaniciAdi;
    END;
    I call the procedure from visual studio .net. the code I used is:
    internal DataSet SelectAdSoyad(string KullaniciAdi)
                   OracleConnection connection=new OracleConnection(connectionString);
                   connection.Open();
                   OracleCommand command=new OracleCommand();
                   command.Connection=connection;
                   command.CommandText="SP_SELECTKISIBYUSERNAME";
                   command.CommandType=CommandType.StoredProcedure;
                   OracleParameter inputParameter;
                   OracleParameter outputParameter;
                   outputParameter=command.Parameters.Add("MY_AD",OracleType.VarChar,20);
                   outputParameter.Direction=ParameterDirection.Output;
                   outputParameter=command.Parameters.Add("MY_SOYAD",OracleType.VarChar,20);
                   outputParameter.Direction=ParameterDirection.Output;
                   outputParameter=command.Parameters.Add("MY_KULLANICIADI",OracleType.VarChar,8);
                   outputParameter.Direction=ParameterDirection.Output;
                   outputParameter=command.Parameters.Add("MY_SCLNO",OracleType.Number,5);
                   outputParameter.Direction=ParameterDirection.Output;
                   inputParameter=command.Parameters.Add("KULLANICIADI",OracleType.VarChar,8);
                   inputParameter.Direction=ParameterDirection.Input ;
                   inputParameter.Value=KullaniciAdi;
                   OracleDataAdapter dataAdapter=new OracleDataAdapter();
                   dataAdapter.SelectCommand=command;
                   dataAdapter.TableMappings.Add("Table","KULLANICI");
                   DataSet dataSet=new DataSet();
                   dataAdapter.Fill(dataSet);
                   return dataSet;
    and on the page_load of default.aspx I used the code;
    private void Page_Load(object sender, System.EventArgs e)
                   // Put user code to initialize the page here
                   string searchString;
                   string userName;
                   int myPos;
                   searchString =Request.ServerVariables["Remote_User"];
                   myPos = searchString.IndexOf(@"\");
                   myPos = (myPos + 1);
                   userName=(searchString.Substring(myPos)).Trim();
                   clsMI kisiUserName=new clsMI();
                   DataSet dsMaster=kisiUserName.SelectAdSoyad(userName);
                   Response.Write(dsMaster.Tables["KULLANICI"].Rows[0]["MY_SCLNO"].ToString());
    the code is returning the error;
    ORA-01422: exact fetch returns more than requested number of rows ORA-06512: pozition "TUBPER.SP_SELECTKISIBYUSERNAME", line 14 ORA-06512: position line 1
    The question I want to ask is this;
    I run the query part of the procedure in the sql plus (of course with variable)
    SQL> SELECT IKY_OZLUK.SCLNO, IKY_OZLUK.AD, IKY_OZLUK.SOYAD, IKY_KULLANICI.KULLANICIADI
    2 FROM IKY_KULLANICI , IKY_OZLUK
    3 WHERE IKY_KULLANICI.SCLNO=IKY_OZLUK.SCLNO
    4 AND IKY_KULLANICI.KULLANICIADI = 'etufan';
    SCLNO AD SOYAD KULLANIC
    62066 EMRAH TUFAN etufan
    SQL>
    as you can see, there is only one row returns.
    So what is the problem.

    Ok,
    The error message 'ORA-01422: exact fetch returns more than requested number of rows ORA-06512: pozition "TUBPER.SP_SELECTKISIBYUSERNAME", line 14 ORA-06512: position line 1' is telling you that the select statement is returning more than one row, when you're doing a SELECT ... INTO. It also tells you where (line 14).
    Your later sqlplus example shows that one row should be returned if the IN parameter, KullaniciAdi = etufan. This suggests that whatever you are passing in, it isn't etufan.
    If you're using Visual Studio you should be able to debug this section
    searchString =Request.ServerVariables["Remote_User"];
    myPos = searchString.IndexOf(@"\");
    myPos = (myPos + 1);
    userName=(searchString.Substring(myPos)).Trim(); and find out what userName actually is. (I would look carefully at @"\" as a backslash is an escape character).
    The oracle part I suggested is a standard way to catch these sort of errors. Essentially you wrap up a statement that might fail in a BEGIN...END block, and the EXCEPTION part allows you to do something when the statement fails.
    try
    BEGIN
    SELECT IKY_OZLUK.SCLNO, IKY_OZLUK.AD, IKY_OZLUK.SOYAD, IKY_KULLANICI.KULLANICIADI INTO MY_SCLNO,MY_AD,MY_SOYAD,MY_KULLANICIADI
    FROM IKY_KULLANICI , IKY_OZLUK
    WHERE IKY_KULLANICI.SCLNO=IKY_OZLUK.SCLNO
    AND IKY_KULLANICI.KULLANICIADI = KullaniciAdi;
    EXCEPTION
    WHEN TOO_MANY_ROWS THEN
    insert into error_table (message)
    values('parameter = ' || KullaniciAdi);
    END
    Obviously you need to create error_table with a suitable message column, but it will show you what was being passed into the procedure.
    alternatively you have some output parameters where you could put the results to diagnose the problem;
    the EXCEPTION clause could be
    EXCEPTION
    WHEN TOO_MANY_ROWS THEN
    MY_AD := KullaniciAdi,
    END;
    You could extend that to put the result of a
    SELECT COUNT(1) FROM
    FROM IKY_KULLANICI , IKY_OZLUK
    WHERE IKY_KULLANICI.SCLNO=IKY_OZLUK.SCLNO
    AND IKY_KULLANICI.KULLANICIADI = KullaniciAdi;
    and put the result into MY_SCLNO, so you could work with them in your .NET application.
    Hope that's some ore help.

  • How do I get return parameters from a stored procedure call?

    The Open SQL Statement has an option on the Advanced tab to specify a command type of 'stored procedure'. In addition to returning a recordset, a stored procedure can also return parameters (see http://support.microsoft.com/support/kb/articles/Q185/1/25.ASP for info on doing this with ADO). Is it possible to get those return parameters with TestStand? In particular, I want to be able to get error codes back from the stored procedure in case it fails (maybe there is another way).

    The Open SQL Statement step type does not fully support stored procedures. If the procedure returns a record set than you can fetch the values as you would a SELECT statement. Stored procedures require you to setup the parameters before the call and this is not yet supported. Bob, in his answer, made a reference to the Statements tab and I think that he was talking about the Database Logging feature in TS 2.0.
    If the stored procedure is returning a return value, it may return as a single column, single row recordset which can be fetched as you normally do a record set.
    Scott Richardson
    National Instruments

  • Getting "ORA-12703" error in forms 10.1.2.3.0 and database 11.1.0.6.0

    Hello All,
    I am using forms 10g (10.1.2.3.0) version with database 11g (11.1.0.6.0).
    I did some modification in a package. That package is getting called in the forms. After doing modification (just add one if condition) in the package procedure (Not added parameter) I connected to the application and calling the form. I am getting the error message "ORA-12703". After that if I am just compile all the forms, one form is working fine. But in some other form it is not working properly. Still I am getting the error message "ORA-12703". I just put some debug message in the package and form, I compiled both form and package. At this time both are working fine. But if I am putting some debug message in the package only then it is not working. Getting the same error message.
    Does it a forms or database issue or I need to do some thing? Any suggestion welcome.
    Thanks
    SUN

    ORA-12703 this character set conversion is not supported
    Cause: An attempt was made to use the CONVERT function to convert between two character sets, and the requested conversion is not possible due to unavailability of one or both character sets.
    Action: Use character sets available on the system in the CONVERT function.
    What character set do you have on the database and what charset on the client side? Maybe SQL*Net issues the convert function when you use different charsets for both?

  • Error executing Stored Procedure that returns a recordset in Visual Basic 6

    Hello, i tried to use the example in the link posted as a response to my question in a previous thread, and in Visual Basic 6, when i execute the Stored procedure it gives me the following error:
    This is the package created as indicated in the example FAQ you posted.
    package types
    as
    type cursorType is ref cursor;
    end;
    This is the procedure created as indicated in the example FAQ you posted.
    PROCEDURE SP_TITUVALO(T_BR IN VARCHAR2,
    P_Cursor OUT TYPES.cursorType )
    AS
    BEGIN
    OPEN P_Cursor FOR
    SELECT * FROM TASAS WHERE BR=T_BR AND TASA > 0;
    END;
    This is the code used to execute the Stored Procedure in VB6:
    Dim objConn As New ADODB.Connection
    Dim connString
    Dim cmdStoredProc As New ADODB.Command
    Dim param1 As New ADODB.Parameter
    Dim RS As ADODB.Recordset
    Set param1 = cmdStoredProc.CreateParameter("T_BR", adVarChar, adParamInput, 255, "97")
    cmdStoredProc.Parameters.Append param1
    objConn.Open strconex
    Set cmdStoredProc.ActiveConnection = objConn
    cmdStoredProc.CommandText = "SP_TITUVALO"
    cmdStoredProc.CommandType = adCmdStoredProc
    Set RS = cmdStoredProc.Execute
    This is the error returned:
    ORA-06550: line 1, column 7:
    PLS-00306: wrong number or types of arguments in call to 'SP_TITUVALO'
    ORA-06550: line 1, column 7:
    PL/SQL: Statement ignored
    ****************************************************************

    Juan,
    Not sure about FAQ you are referring to, but it seems that you need to set PLSQLRSet property of ADODB.Command to TRUE. Because if you fail to do so - errors with refcursors are likely to happen.
    Consider:
    Set objConn = CreateObject("ADODB.Connection")
    objConn.ConnectionString = "Provider=OraOLEDB.Oracle;Persist Security Info=False;Data Source=test9ora;User ID=max;Password=blabla"
    objConn.Open
    'Dim cmdStoredProc
    Set cmdStoredProc = CreateObject("ADODB.Command")
    Dim param1
    Set param1 = cmdStoredProc.CreateParameter("T_BR", adVarChar, adParamInput, 255, "97")
    param1.Value = "X"
    cmdStoredProc.Parameters.Append param1
    'Dim RS
    Set cmdStoredProc.ActiveConnection = objConn
    'The following line was missed out
    cmdStoredProc.Properties("PLSQLRSet") = True
    cmdStoredProc.CommandText = "SP_TITUVALO"
    cmdStoredProc.CommandType = adCmdStoredProc
    Set RS = cmdStoredProc.ExecuteThis works fine, at least for me.
    Cheers.

  • Error calling stored procedure from MFC using odbc

    Hello,
    I am using MFC to call a stored procedure written in PL/SQL, but when I make the call I get the next error in Spanish:
    "No se enlazaron columnas antes de llamar a SQLFetchScroll o SQLExtendedFetch", which more or less in English means:
    "No rows were binded before calling SQLFetchScroll or SQLExtendedFetch".
    I am using a CRecordset derived class to access the stored procedure. I am unable to find the error.
    THE STORED PROCEDURE'S HEADER:
    Sp_Int_Ot_Ordendetrabajoalta ( lineatrabajo NUMBER, lv_orden NUMBER, usuario
    VARCHAR2, idvehiculo NUMBER, fechamax1 VARCHAR2, resumen VARCHAR2, detalle
    VARCHAR2,
    coderp VARCHAR2, numtrabrecibidos NUMBER, lv_CODOT VARCHAR2, retorno OUT
    INTEGER)
    THE .H FOR THE CRECORDSET DERIVED CLASS (Visual Studio 6 comments removed)
    class CRecSP : public CRecordset
    public:
    CRecSP(CDatabase* pDatabase = NULL);
    DECLARE_DYNAMIC(CRecSP)
    CString m_szSQL;
    long m_RETORNO;
    virtual CString GetDefaultConnect();
    virtual CString GetDefaultSQL();
    virtual void DoFieldExchange(CFieldExchange* pFX);
    THE .CPP FOR THE CLASS (VS6 comments removed)
    IMPLEMENT_DYNAMIC(CRecSP, CRecordset)
    CRecSP::CRecSP(CDatabase* pdb) : CRecordset(pdb)
    m_RETORNO = 0;
    m_nParams = 1;
    m_nDefaultType = snapshot;
    CString CRecSP::GetDefaultConnect()
    return T( DBCONNECTION_STRING );
    CString CRecSP::GetDefaultSQL()
    return m_szSQL;
    void CRecSP::DoFieldExchange(CFieldExchange* pFX)
    pFX->SetFieldType(CFieldExchange::outputParam);
    RFX_Long(pFX, _T("[retorno]"), m_RETORNO );
    USING THE CRECORDSET DERIVED CLASS: (Vars read from EditBoxes as CStrings
    and formatted in the SQL)
    CRecSP *rec = new CRecSP(&db);
    szSQL.Format( "{CALL
    FGROT2005.SP_INT_OT_ORDENDETRABAJOALTA(%s,%s,'%s',%s,'%s','%s','%s','%s',%s,'%s',?)}",
    szLinea, szOrden, "USER", szIdVeh, szFechaMax, szResumen,
    szDetalle, "ERP", "0", szCodOT
    rec->m_szSQL = szSQL;
    //rec->Open( CRecordset::forwardOnly,szSQL,CRecordset::readOnly );
    rec->Open( );
    iError = rec->m_RETORNO;
    rec->Close();

    This forum is meant for discussions about OTN content/site and services.
    Questions about Oracle products and technologies will NOT be answered in this forum. Please post your product or technology related questions in the appropriate product or technology forums, which are monitored by Oracle product managers.
    Product forums:
    http://forums.oracle.com/forums/index.jsp?cat=9
    Technology forums:
    http://forums.oracle.com/forums/index.jsp?cat=10

Maybe you are looking for

  • End of Page in Line Selection

    I want to trigger the end of page for the secondary list. The secondary list is displayed as a window. Is there any way to do this ? Thanks in advance.

  • Best Option (if any) for Load Balancing Distribution Point(s) on Same LAN

    Hey Guys -  I've got a simple question this time.  We use SCCM 2012 R2, manage ~800 systems at 3 locations, but perform most work at our main office where this scenario takes place.  Here, we have a single DP on-site which is a separate VM than our P

  • Maint. packages daily,weekly,fortnightly,monthly,quarterly,half yearly,year

    Dear All, My client wants to maintain only One Maintenance Strategy for all the Equipments.In that they want to keep following Maintenance Packages. 1) Daily 2) Weekly 3) Fortnightly 4) Monthly 5) Quarterly (Three monthly) 6) Half Yearly 7) Yearly Wh

  • Administrator access is broken!  Help please?

    at some (very much unknown) point, I have apparently broken my core administrator access to ColdFusion MX7.  We are in the process of upgrading to Coldfusion 8, and as I went to review some information in the older system, I have found that I no long

  • Need to Apply validation to Address Line1 in Self Service HR

    Hi all, Currently user is able to enter any no. of characters in Address Line1 through Self Service HR (ie. web). We would like to resctrict user to enter not more than 20 Chars in Address Line1. Could anyone please let me know whats the best method