Declaration in plsql

hi
I am trying to compile this code but its not comipiling here is the code
<pre>
declare
     type null_record is record(
          fname varchar2(10) default 'PLSQL',
          lname varchar2(10) default 'Oracle');
procedure by_refrence(in_r in null_record, out_r out nocopy null_record) is
     begin
          out_r := in_r;
     end by_refrence;
r_var1 null_record;
     r_var2 null_record;
begin
     r_var2.fname := 'SQL';
     dbms_output.put_line('before assigning' || r_var2.fname);
     by_refrence(r_var2, r_var1);
     -- both the attributes of the records turns null
     dbms_output.put_line('after assigning ' || r_var1.fname);
end
</pre>;

Not compiling? I'm not surprised: Where did you find this structure?
If you want an anonymous block then get the procedure declaration out of there.
If you want a stored procedure drop the word DECLARE and put your variables into the correct place before the BEGIN.
Look a the demos here:
http://www.psoug.org/reference/procedures.html
Likely your types should either be stand-alone types or declared in a package header.

Similar Messages

  • PLS-00323 forward declaration in PLSQL Version 10.

    Hello.
    I have a package which contains forward references which compiles on a 9i database.
    However, when I try to compile an exact copy of the procedure on a 10g database it returns an error
    "PLS-00323: subprogram or cursor 'P_PA_ACTION_START' is declared in a package specification and must be defined in the package body"
    I was wondering if there were any differences in the rules concerning forward references in pl/sql 10.
    Thanks in advance.
    Glyn Williams.

    Hello.
    I have a package which contains forward references which compiles on a 9i database.
    However, when I try to compile an exact copy of the procedure on a 10g database it returns an error
    "PLS-00323: subprogram or cursor 'P_PA_ACTION_START' is declared in a package specification and must be defined in the package body"
    I was wondering if there were any differences in the rules concerning forward references in pl/sql 10.
    Thanks in advance.
    Glyn Williams.

  • Error while retrieving data from PL/SQL Table using SELECT st. (Urgent!!!)

    Hi Friends,
    I am using Oracle 8.1.6 Server, & facing problems while retrieving data from a PL/SQL Table:
    CREATE or REPLACE PROCEDURE test_proc IS
    TYPE tP2 is TABLE of varchar2(10); --declared a collection
    dt2 tP2 := tP2('a','b','c');
    i NUMBER(8);
    begin
    SELECT COUNT(*) INTO i FROM TABLE(CAST(dt2 as tP2));
    DBMS_OUTPUT.PUT_LINE('**'||i);
    end;
    While executing the above procedure, I encountered foll. error:
    ERROR at line 1:
    ORA-00600: internal error code, arguments: [15419], [severe error during PL/SQL execution], [], [],
    ORA-06544: PL/SQL: internal error, arguments: [pfrrun.c:pfrbnd1()], [], [], [], [], [], [], []
    ORA-06553: PLS-801: internal error [0]
    Can anyone please help me, where the problem is??
    Is it Possible to retrieve data from PL/SQL TABLE using SELECT statement? & How ?
    Thanks in advance.
    Best Regards,
    Jay Raval.

    Thanks Roger for the Update.
    It means that have to first CREATE TYPE .. TABLE in database then only I can fire a Select statement on that TYPE.
    Actually I wanted to fire a Select statement on the TABLE TYPE, defined & declared in PLSQL stored procedure using DECLARE TYPE .. TABLE & not using CREATE TYPE .. TABLE.
    I was eager to know this, because my organization is reluctant in using CREATE TYPE .. TABLE defined in the database, so I was looking out for another alternative to access PL/SQL TABLE using Select statement without defining it database. It would have been good if I could access a PLSQL TABLE using Select statement Declared locally in the stored procedure.
    Can I summarize that to access a PL/SQL TABLE using SELECT statement, I have to first CREATE TYPE .. TABLE?
    If someone have any other idea on this, please do let me know.
    Thanks a lot for all help.
    Best Regards,
    Jay Raval.
    You have to define a database type...
    create type tP2 is table of varchar2(10)
    CREATE OR REPLACE PROCEDURE TEST_PROC
    IS
    dt2 tP2 := tP2('a','b','c');
    i NUMBER(8);
    begin
    SELECT COUNT(*) INTO i FROM TABLE(CAST (dt2 AS tP2));
    DBMS_OUTPUT.PUT_LINE('**'||i);
    end;
    This will work.
    Roger

  • Host command in PL/SQL Package

    Hi,
    How is it possible to launch a host command from a PL/SQL package without Pro*C nor Java ?
    Hope it's possible, 'cos Java is not available here and Pro*C has some^problems that the DBA cqn't solve...
    Could you please answer at [email protected]
    Thanks in advance !

    Hi Thomas,
    You can call external progs within PlSql.
    You have to
    - Configure Tnsnames.ora aned listener.ora on the server
    with the 'extproc' entry
    - Have an external proc in a DDL on NT (or .so on unix)
    - Create a libray pointing on this .so file with 'Create library'
    - Declare a PlSql proc calling your external proc in the library
    And then you will use your PlSql proc within your package.
    It's fastidious but it works.
    Mbo

  • Package and type declaratrion in 10g

    Hi forum,
    1) Any difference is threre in ora 10g for declaration of plsql types'
    Eg : type temp_x_tab is a table of x%rowtype index by binary integer;
    here x is a pre-defined table in schema.
    Is thr anything wronmg with this declaration in 10g?
    2) Similarly package declration and specification has got any diference in 10g ,compared to previous releases of oracle?
    Thanks,
    Aneesh

    The docs are at http://tahiti.oracle.com

  • Strange problem with procedure calling from Java!!!

    I am using Oracle 8.1.7 Database, Oracle 8i Application server and WInNT platform.
    I am facing a strange problem while inserting a String from Java to Oracle database through Procedure. When i am passing the String containing single quotes(e.g "test' and ' and ' end") and without including any escape charactes for the single quotes I am passing the String by the setString() method then the procedure is inserting the single quotes without any problem.
    Of course when I am independently executing the procedure thru backend and passing the same String containing single quotes then the error message comes as " quoted string not properly terminated" which is justified,
    I have even printed the String in a file through sql on the runtime of the procedure when it is called by Java and then also the String contatins single quotes that is passed through java without any escape characters. This means that procedure is inserting the String into the column without any hassles!!!!!
    Can anyone tell me what may be the reason for the peculiar behaviour of Database?
    Thanks

    Sri Ram wrote:
    No actually in the documentation of oracle database 10g plsql user guide, oracle explains the concept of declaring nested plsql subprograms he gave the example but in the main block he gave NULL, without calling any procedure.Can you provide a link to where in the Oracle documentation you saw this example?
    in order to know which procedure is getting first i added a dbms statement in both the functions and called the function from the main block.
    the original example was
    DECLARE
    PROCEDURE proc1(number1 NUMBER); -- forward declaration
    PROCEDURE proc2(number2 NUMBER) IS
    BEGIN
    proc1(number2); -- calls proc1
    END;
    PROCEDURE proc1(number1 NUMBER) IS
    BEGIN
    proc2 (number1); -- calls proc2
    END;
    BEGIN
    NULL;
    END;
    ---------------------------------------------------------------------------------------------------------The original example is equivalent to:
    BEGIN
       NULL;
    END;That is, the main block never calls anything. Either you are misinterpreting the Oracle documentation, or if the example came from a non-Oracle source as I suspect, the author of that example has a deeply flawed understanding of how programming works.
    John

  • Mail send daily on fixed time 8:00 AM to the user.

    Dear Sir,
    i want to send Mail daily on 8:00 AM to the user.
    my code is
    DECLARE
    l_id number;
    to_add varchar2(1000);
    to_sub_by varchar2(1000);
    from_add varchar2(1000);
    l_body varchar2(4000):=:P33_DESCRIPTION;
    l_sub varchar2(1000):=:P33_SUBJECT;
    I_case varchar2(10):=:P33_CASE_ID;
    I_isue_dte date:=:P33_SUBMITTED_ON;
    l_regd    varchar(100);
    CURSOR C1 IS SELECT EMAIL_ID,(SELECT EMAIL_ID FROM USER_MAS WHERE USER_ID =:P33_SUBMITTED_BY_ID) AS D FROM USER_MAS WHERE USER_GR_ID=:P33_ASSIGNED_TO_GROUP_ID AND USER_ID NOT IN(:APP_USER);
    BEGIN
    if :P33_ASSIGNED_TO_GROUP_ID is not null then
    open C1;
    LOOP
    FETCH C1 INTO to_add,to_sub_by;
    EXIT WHEN C1%NOTFOUND;
    select email_id,user_name into from_add,l_regd from user_mas where user_id=:app_user;
    l_id:=APEX_MAIL.SEND(
            p_to        => to_add, -- change to your email address
            P_cc        => to_sub_by,
            p_from      => from_add,
            p_body      => 'Issue Information'||''||chr(13)||chr(10)||chr(13)||chr(10)||
                           'www.farhorizonindia.net:7777/crm'||''||chr(13)||
                           'Issue Title'||':'||l_sub||CHR(13)||chr(10)||
                           'Issue Number'||':'||I_case||CHR(13)||
                           'Issue Open Date'||':'||I_isue_dte||''||chr(13)||chr(10)||CHR(13)||chr(10)||
                           'Most Recent Comment'||':'||''||chr(13)||chr(10)||
                           l_body||chr(13)||chr(10)||''||CHR(13)||chr(10)||'Regards'||chr(13)||chr(10)||''||l_regd||CHR(13)||chr(10)||CHR(13)||chr(10)||'Please do not reply to this email.If you wish to update the call.please login to the issue Management.',
      P_subj      => I_case ||' Issue '||l_sub);
    end loop;
    close C1;
    end if;
    COMMIT;
    apex_mail.push_queue(
    P_SMTP_HOSTNAME => '102.111.0.9',
    P_SMTP_PORTNO => 25);
    commit;
    END;How can i do this.
    Edited by: Vedant on Jun 30, 2011 3:44 AM
    Edited by: Vedant on Jul 5, 2011 9:17 PM

    Hi vedant,
    you can use the DBMS_JOB to execute your pl/sql process daily, first declare your plsql process as procedure or package and then call your procedure or package within the DBMS_JOB like this
    DECLARE
        jobno number;
    BEGIN
        DBMS_JOB.SUBMIT(
            job => jobno,
            what => 'BEGIN (your procedure or package name); END;',
            next_date => SYSDATE,
            interval => TRUNC(SYSDATE)+(25/24));
        COMMIT;
    END;
    / May be this will help you.
    Regards,
    Mini
    Marks Answers appropriately.

  • PLSQL compiles but doesn't run.. I've declared it everywhere but still..

    PLSQL compiles but doesn’t run.. I’ve declared it everywhere but still..
    Afternoon.. Hopefully a quick one for someone.. I’m trying to run a Concurrent Program in ORACLE Financials using a Data Template derived BI Publisher report.
    Error message received..
    SUBIXCLT module: UofS Expense Claim Tracking Report
    +--------------------------------------------------------------------------
    All Parameters: raisedby=:status=:claimant=:expense_date_from=:expense_date_to=:LP_ORDERED_BY=Expense Report Number
    Data Template Code: SUBIXCLT
    Data Template Application Short Name: PO
    Debug Flag: N
    {raisedby=, claimant=, expense_date_to=, expense_date_from=, status=, LP_ORDERED_BY=Expense Report Number}
    Calling XDO Data Engine...
    [060410_025628319][][STATEMENT] Start process Data
    [060410_025628324][][STATEMENT] Process Data ...
    [060410_025628329][][STATEMENT] Executing data triggers...
    [060410_025628329][][STATEMENT] BEGIN
    SUBIXCLT.claimant := :claimant ;
    SUBIXCLT.expense_date_from := :expense_date_from ;
    SUBIXCLT.expense_date_to := :expense_date_to ;
    SUBIXCLT.raisedby := :raisedby ;
    SUBIXCLT.status := :status ;
    SUBIXCLT.lp_ordered_by := :lp_ordered_by ;
    :XDO_OUT_PARAMETER := 1;
    END;
    l_flag Boolean;
    BEGIN
    l_flag := SUBIXCLT.BEFOREREPORT(L_ORDERED) ;
    if (l_flag) then
    :XDO_OUT_PARAMETER := 1;
    end if;
    end;
    [060410_025628356][][EXCEPTION] SQLException encounter while executing data trigger....
    java.sql.SQLException: ORA-06550: line 4, column 33:
    PLS-00201: identifier 'L_ORDERED' must be declared
    ORA-06550: line 4, column 1:
    PL/SQL: Statement ignoredThe Data Template
    The Data Template
    <?xml version="1.0" encoding="utf-8" ?>
    - <dataTemplate name="UofS_OutstandngExpenses_Report" defaultPackage="SUBIXCLT" dataSourceRef="FINDEV" version="1.0">
    - <properties>
      <property name="xml_tag_case" value="upper" />
      <property name="include_parameters" value="true" />
      <property name="debug_mode" value="on" />
      </properties>
    - <parameters>
      <parameter name="claimant" dataType="character" defaultValue="" />
      <parameter name="expense_date_from" dataType="date" defaultValue="" />
      <parameter name="expense_date_to" dataType="date" defaultValue="" />
      <parameter name="raisedby" dataType="character" defaultValue="" />
      <parameter name="status" dataType="character" defaultValue="" />
      <parameter name="lp_ordered_by" dataType="character" defaultValue="" />
      </parameters>
    - <dataQuery>
      <dataTrigger name="beforeReportTrigger" source="SUBIXCLT.BEFOREREPORT(L_ORDERED)" />
    - <sqlStatement name="Q1">
    - <![CDATA[
    SELECT DISTINCT
    erh.invoice_num,
    pap.full_name EMP_CLAIMING,
    DECODE(NVL(erh.expense_status_code, 'Not yet Submitted (NULL)'), 'CANCELLED', 'CANCELLED',
         'EMPAPPR', 'Pending Individuals Approval',      'ERROR', 'Pending System Administrator Action',
         'HOLD_PENDING_RECEIPTS     ', 'Hold Pending Receipts', 'INPROGRESS', 'In Progress', 'INVOICED', 'Ready for Payment',
         'MGRAPPR', 'Pending Payables Approval', 'MGRPAYAPPR', 'Ready for Invoicing', 'PAID', 'Paid',
         'PARPAID', 'Partially Paid',     'PAYAPPR', 'Payables Approved',     'PENDMGR', 'Pending Manager Approval',
         'PEND_HOLDS_CLEARANCE', 'Pending Payment Verification',     'REJECTED', 'Rejected',     'RESOLUTN',     'Pending Your Resolution',
         'RETURNED',     'Returned',     'SAVED',     'Saved',     'SUBMITTED',     'Submitted',     'UNUSED',     'UNUSED',
         'WITHDRAWN','Withdrawn',     'Not yet Submitted (NULL)') "EXPENSE_STATUS" ,
    NVL(TO_CHAR(erh.report_submitted_date,'dd-MON-yyyy'),'NULL') SUBMIT_DATE,
    NVL(TO_CHAR(erh.expense_last_status_date,'dd-MON-yyyy'),'NULL') LAST_UPDATE,
    erh.override_approver_name ER_Approver,
    fu.description EXP_ADMIN,
    erh.total,
    erh.description 
    FROM
    AP_EXPENSE_REPORT_HEADERS_all erh,
    per_all_people_f pap, fnd_user fu
    WHERE erh.employee_id = pap.person_id
    AND fu.user_id = erh.created_by
    AND NVL(erh.expense_status_code, 'Not yet Submitted') NOT IN  ('MGRAPPR', 'INVOICED', 'PAID', 'PARPAID')
    AND pap.full_name = NVL(:claimant, pap.full_name)
    AND TRUNC(erh.report_submitted_date) BETWEEN NVL(:expense_date_from, '01-JAN-1999') AND NVL(:expense_date_to,'31-DEC-2299')
    AND fu.description = NVL(:raisedby,fu.description)
    AND erh.expense_status_code = NVL(:status,erh.expense_status_code) &LP_ORDERED_BY
      ]]>
      </sqlStatement>
      </dataQuery>
      <dataTrigger name="beforeReportTrigger" source="SUBIXCLT.BEFOREREPORT(L_ORDERED)" />
    - <dataStructure>
    - <group name="G_XP_CLM_TRACKNG" source="Q1">
      <element name="INVOICE_NUM" value="INVOICE_NUM" />
      <element name="EMP_CLAIMING" value="EMP_CLAIMING" />
      <element name="EXPENSE_STATUS" value="EXPENSE_STATUS" />
      <element name="SUBMIT_DATE" value="SUBMIT_DATE" />
      <element name="LAST_UPDATE" value="LAST_UPDATE" />
      <element name="LP_ORDERED_BY" dataType="varchar2" value="SUBIXCLT.LP_ORDERED_BY" />
      </group>
      </dataStructure>
      </dataTemplate>The PL SQL..
    The PL SQL..
    CREATE OR REPLACE PACKAGE Subixclt IS
    L_ORDERED  VARCHAR2(50);
    RAISEDBY VARCHAR2(50);
    STATUS VARCHAR2(50);
    CLAIMANT VARCHAR2(50);
    LP_ORDERED_BY VARCHAR2(50);
    FUNCTION BEFOREREPORT(L_ORDERED IN VARCHAR2) RETURN VARCHAR2;
    EXPENSE_DATE_FROM DATE;
    EXPENSE_DATE_TO DATE;
    --RETURN VARCHAR2;
    END;
    CREATE OR REPLACE PACKAGE BODY Subixclt IS
    FUNCTION BEFOREREPORT(L_ORDERED IN VARCHAR2)RETURN VARCHAR2 IS
    BEGIN
    Fnd_File.PUT_LINE(Fnd_File.LOG,'L_ORDERED'||L_ORDERED);
    DECLARE
    LP_ORDERED_BY VARCHAR2(50);
    L_ORDERED  VARCHAR2(50);
    RAISEDBY VARCHAR2(50);
    STATUS VARCHAR2(50);
    CLAIMANT VARCHAR2(100);
    EXPENSE_DATE_FROM DATE;
    EXPENSE_DATE_TO DATE;
    BEGIN
    IF (LP_ORDERED_BY='Expense Report Number') THEN
         LP_ORDERED_BY :='order by 1 asc;';
      ELSIF (LP_ORDERED_BY='Person Claiming') THEN
         LP_ORDERED_BY :='order by 2 asc;';
      ELSIF (LP_ORDERED_BY='Submit Date') THEN
      LP_ORDERED_BY :='order by 4 asc;';
      END IF;
    RETURN(L_ORDERED);
    --RETURN NULL;
    END;
    END;
    END;Thanks for looking..
    Steven
    Edited by: Mr_Alkan on Jun 4, 2010 3:35 PM

    One has to initialise a session first for use with Oracle Apps if you want to make it run as a concurrent job.
    Any decleration within your package will not be recognised unless initialisation is sucessful.
    Investigate the built-in packages:
    FND_GLOBAL - for initialisation
    FND_SUBMIT - for setting session relevant parameters
    -- function returns true or false depending on whether the initialisation was sucessful or not
    create or replace function is_Init_OK (p_User_Name       in varchar2
                                          ,p_Responsibility  in varchar2
                                          ,p_Language        in varchar2) return boolean as
      b_Set_NLS   boolean;
      b_Set_Mode  boolean;
      r_ISet      fnd_Init := Get_Init_Set(p_User_Name, p_Responsibility);
      begin
        -- 1
        fnd_global.apps_initialize(r_ISet.User_ID, r_ISet.Resp_ID, r_ISet.App_ID);
        -- 2
        b_Set_NLS := fnd_submit.set_nls_options(p_Language);
        -- 3
        b_Set_Mode  := fnd_submit.set_mode (false);
        return (b_Set_Mode and b_Set_NLS and (    (r_ISet.Resp_ID is not null)
                                              and (r_ISet.User_ID is not null)
        exception
          when others then
            return false;
    end is_Init_OK;
    -- for example
    declare
      l_User_ID number = 'IMPORT_POST'; --- import post user
      l_Resp    number =  'Import and Posting responsibility' -- import posting responsibility
      l_Language varchar2(100) := 'AMERICAN';
      b_Init boolean := false;
      INIT_EXCEPTION exception;
    begin
      b_Init := is_Init_OK(l_User_ID, l_Resp, l_Language);
      if (not b_Init) then
        raise INIT_EXCEPTION;
      end if;
      -- conitnue with your processing
      exception 
        when others then
          when INIT_EXECPTION then
          when others then
    end;
    /

  • How to declare and use multi dimensional VARRAYs in PLSQL

    Hi All,
    I am trying to create and use multidimensional varray in plsql code...
    can anyone let me know, how can I do this...
    Thanks
    Krishna

    Please do not confuse plsql collections with type objects.Well it's possible with persistent types but nested tables and varrays typically need to be explicitly initialized and extended.
    Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
    SQL> CREATE OR REPLACE TYPE name_type_size IS VARRAY (3) OF VARCHAR2 (50);
      2  /
    Type created.
    SQL> CREATE OR REPLACE TYPE name_type_size_array IS VARRAY (200) OF name_type_size;
      2  /
    Type created.
    SQL> DECLARE
      2     i_name_type_size_array name_type_size_array :=  name_type_size_array ();
      3  BEGIN
      4     FOR count1 IN 1 .. 200 LOOP
      5
      6        i_name_type_size_array.EXTEND;
      7        i_name_type_size_array (count1) := name_type_size ();
      8
      9        FOR count2 IN 1 .. 3 LOOP
    10
    11           i_name_type_size_array (count1).EXTEND;
    12           i_name_type_size_array (count1) (count2) := count2;
    13
    14        END LOOP;
    15
    16     END LOOP;
    17  END;
    18  /
    PL/SQL procedure successfully completed.
    SQL>

  • Difference between empty plsql record and null plsql record

    Hi there,
    I am kinda getting confused with empty plsql record and null plsql record.
    How do I assign plsql record to be empty and to be null?
    create type emp_obj as object (enum number, ename varchar2);
    CREATE OR REPLACE TYPE emp_type AS TABLE OF emp_obj;
    Thanks

    First of all, do not use term PL/SQL record in this context. Record type in PL/SQL is completely different from object type. Secondly, there are 2 states of a nested table:
    1. Unintialized:
    SQL> create or replace
      2    type emp_obj_type as object(enum number, ename varchar2(10));
      3  /
    Type created.
    SQL> create or replace
      2    type emp_tbl_type as table of emp_obj_type
      3  /
    Type created.
    SQL> declare
      2      v_emp_tbl emp_tbl_type;
      3  begin
      4      v_emp_tbl.extend;
      5  end;
      6  /
    declare
    ERROR at line 1:
    ORA-06531: Reference to uninitialized collection
    ORA-06512: at line 4
    SQL> 2 Empty:
    SQL> set serveroutput on
    SQL> declare
      2      v_emp_tbl emp_tbl_type := emp_tbl_type();
      3  begin
      4      dbms_output.put_line('Nested table v_emp_tbl has ' || v_emp_tbl.count || ' element(s).');
      5  end;
      6  /
    Nested table v_emp_tbl has 0 element(s).
    PL/SQL procedure successfully completed.
    SQL> NULL aplies to nested table element, not to nested table itself:
    SQL> declare
      2      v_emp_tbl emp_tbl_type := emp_tbl_type();
      3  begin
      4      v_emp_tbl.extend;
      5      if v_emp_tbl(1) is null
      6        then
      7          dbms_output.put_line('Nested table v_emp_tbl first element is NULL.');
      8      end if;
      9  end;
    10  /
    Nested table v_emp_tbl first element is NULL.
    PL/SQL procedure successfully completed.
    SQL> SY.

  • Get distinct values from plsql array

    Hi,
    I have declared a variable as below in plsql proc.
    type t_itemid is table of varchar2(10);
    inserted set of items in to this using a program
    now i want distinct values from that array how can i get it.

    I am using 9i so i cannot use set operator and more over my problem is that i am declaring the variable inside the plsql block . when i tried i am getting the below errors:
    SQL> r
    1 declare
    2 type t_type is table of varchar2(10);
    3 v_type t_type;
    4 begin
    5 v_type := t_type('toys','story','good','good','toys','story','dupe','dupe');
    6 for i in (select column_value from table(v_type)) loop
    7 dbms_output.put_line(i.column_value);
    8 end loop;
    9* end;
    for i in (select column_value from table(v_type)) loop
    ERROR at line 6:
    ORA-06550: line 6, column 41:
    PLS-00642: local collection types not allowed in SQL statements
    ORA-06550: line 6, column 35:
    PL/SQL: ORA-22905: cannot access rows from a non-nested table item
    ORA-06550: line 6, column 10:
    PL/SQL: SQL Statement ignored
    ORA-06550: line 7, column 22:
    PLS-00364: loop index variable 'I' use is invalid
    ORA-06550: line 7, column 1:
    PL/SQL: Statement ignored

  • Urgent - How to call a Web Services from PLSQL - Please help

    Hello,
    I am very much new to WebServices, need to call web services through PLSQL. I have a urgent requirement, where i need to call the web services by passing from some paramters to it and the web services will return a varchar values as 'PASSED' or 'FAILED'.
    Can you please approch me the best way to start with.
    Thanks,
    Srikanth.

    Hi,
    I need to do it from PLSQL API's not from JAVA.
    I have started developing the code through UTIL_HTTP. Getting lots of error.
    Can you please guide me through these error.
    Below is the wsdl and a blcok where i am trying to retrive the value from webservice.
    Hope this will help you.
    Code:
    declare
    soap_request varchar2(30000);
    soap_respond varchar2(30000);
    http_req utl_http.req;
    http_resp utl_http.resp;
    resp XMLType;
    i integer;
    begin
    soap_request:= '<?xml version = "1.0" encoding = "UTF-8"?>
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <SOAP-ENV:Body>
    <ns1:soapCheckRequest1 wsdl:ns1="https://isportal-qa.iss.net/exportcompliancemanager/services/ExportCheckService" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <FirstName xsi:type="xsd:string">saddam</FirstName>
    <LastName xsi:type="xsd:string">hussein</LastName>
              <companyName xsi:type="xsd:string">samueladams</companyName>
              <address1 xsi:type="xsd:string">123 APT</address1>
              <address3 xsi:type="xsd:string">Atlanta</address3>
              <city xsi:type="xsd:string">uk</city>
              <stateOrRegion xsi:type="xsd:string">GA</stateOrRegion>
              <postalCode xsi:type="xsd:string">30338</postalCode>
              <email xsi:type="xsd:string">sj@samueladams</email>
              <isoCountryCode xsi:type="xsd:string">US</isoCountryCode>
              <endUserIP xsi:type="xsd:string">209.134.168.203</endUserIP>
    </ns1:soapCheckRequest1>
    </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    http_req:= utl_http.begin_request
    ( 'http://isportal-qa.iss.net/exportcompliancemanager/services/ExportCheckService'
    , 'POST'
    , 'HTTP/1.1'
    utl_http.set_header(http_req, 'Content-Type', 'text/xml'); -- since we are dealing with plain text in XML documents
    utl_http.set_header(http_req, 'Content-Length', length(soap_request));
    utl_http.set_header(http_req, 'SOAPAction', ''); -- required to specify this is a SOAP communication
    utl_http.write_text(http_req, soap_request);
    http_resp:= utl_http.get_response(http_req);
    DBMS_OUTPUT.PUT_LINE('-------utl_http.get_response---------------------');
    DBMS_OUTPUT.PUT_LINE('http_resp.status_code is :'||http_resp.status_code );
    DBMS_OUTPUT.PUT_LINE('http_resp.reason_phrase is :'||http_resp.reason_phrase);
    DBMS_OUTPUT.PUT_LINE('http_resp.http_version is :'||http_resp.http_version);
    DBMS_OUTPUT.PUT_LINE('http_resp.private_hndl is :'||http_resp.private_hndl);
    DBMS_OUTPUT.PUT_LINE('-------utl_http.get_response----------------------');
    utl_http.read_text(http_resp, soap_respond);
    utl_http.end_response(http_resp);
    resp:= XMLType.createXML(soap_respond);
    resp:= resp.extract('/soap:Envelop/soap:Body/child::node()'
    , 'xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"'
    i:=0;
    loop
    dbms_output.put_line(substr(soap_respond,1+ i*255,250));
    i:= i+1;
    if i*250> length(soap_respond)
    then
    exit;
    end if;
    end loop;
    end;
    Error Message
    http_resp.reason_phrase is :Internal Server Error
    http_resp.http_version is :HTTP/1.1
    http_resp.private_hndl is :0
    -------utl_http.get_response----------------------
    <?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><soapenv:Fault><faultco
    apenv:Server.userException</faultcode><faultstring>org.xml.sax.SAXParseException: The prefix &quot;ns1&quot; for element &quot;ns1:soapCheckRequest1&quot; is not bound.</faultstring><detail><ns1:hostname xmlns:ns1="http://xml.apache.org/axis/">atlcms
    2.iss.net</ns1:hostname></detail></soapenv:Fault></soapenv:Body></soapenv:Envelope>
    <?xml version="1.0" encoding="UTF-8" ?>
    - <wsdl:definitions targetNamespace="https://isportal-qa.iss.net/exportcompliancemanager/services/ExportCheckService" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="https://isportal-qa.iss.net/exportcompliancemanager/services/ExportCheckService" xmlns:intf="https://isportal-qa.iss.net/exportcompliancemanager/services/ExportCheckService" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    - <!--
    WSDL created by Apache Axis version: 1.3
    Built on Oct 05, 2005 (05:23:37 EDT)
    -->
    - <wsdl:message name="soapCheckResponse1">
    <wsdl:part name="soapCheckReturn" type="soapenc:string" />
    </wsdl:message>
    - <wsdl:message name="soapCheckRequest1">
    <wsdl:part name="firstName" type="soapenc:string" />
    <wsdl:part name="lastName" type="soapenc:string" />
    <wsdl:part name="companyName" type="soapenc:string" />
    <wsdl:part name="address1" type="soapenc:string" />
    <wsdl:part name="address2" type="soapenc:string" />
    <wsdl:part name="address3" type="soapenc:string" />
    <wsdl:part name="city" type="soapenc:string" />
    <wsdl:part name="stateOrRegion" type="soapenc:string" />
    <wsdl:part name="postalCode" type="soapenc:string" />
    <wsdl:part name="email" type="soapenc:string" />
    <wsdl:part name="phone" type="soapenc:string" />
    <wsdl:part name="isoCountryCode" type="soapenc:string" />
    <wsdl:part name="endUserId" type="soapenc:string" />
    <wsdl:part name="endUserIP" type="soapenc:string" />
    <wsdl:part name="endUserSession" type="soapenc:string" />
    <wsdl:part name="performGovCheck" type="xsd:boolean" />
    <wsdl:part name="sendEmailNotification" type="xsd:boolean" />
    <wsdl:part name="screeningLevelBasedOnSuppliedCountryCode" type="xsd:boolean" />
    <wsdl:part name="screeningLevelBasedOnEndUserIP" type="xsd:boolean" />
    <wsdl:part name="soundexMatch" type="xsd:boolean" />
    </wsdl:message>
    - <wsdl:message name="soapCheckRequest">
    <wsdl:part name="firstName" type="soapenc:string" />
    <wsdl:part name="lastName" type="soapenc:string" />
    <wsdl:part name="companyName" type="soapenc:string" />
    <wsdl:part name="address1" type="soapenc:string" />
    <wsdl:part name="address2" type="soapenc:string" />
    <wsdl:part name="address3" type="soapenc:string" />
    <wsdl:part name="city" type="soapenc:string" />
    <wsdl:part name="stateOrRegion" type="soapenc:string" />
    <wsdl:part name="postalCode" type="soapenc:string" />
    <wsdl:part name="email" type="soapenc:string" />
    <wsdl:part name="phone" type="soapenc:string" />
    <wsdl:part name="isoCountryCode" type="soapenc:string" />
    <wsdl:part name="endUserId" type="soapenc:string" />
    <wsdl:part name="endUserIP" type="soapenc:string" />
    <wsdl:part name="endUserSession" type="soapenc:string" />
    <wsdl:part name="performGovCheck" type="xsd:boolean" />
    <wsdl:part name="sendEmailNotification" type="xsd:boolean" />
    <wsdl:part name="screeningLevelBasedOnEndUserIP" type="xsd:boolean" />
    <wsdl:part name="soundexMatch" type="xsd:boolean" />
    </wsdl:message>
    - <wsdl:message name="soapCheckResponse">
    Thanks and Regard,
    Srikanth

  • Passing values to between Pages from a PLSQL Procedure in third Page

    Hello,
    I have a form divided into 3 pages. The first Page is used to select Template which is used to call a screen Page 54 and Page 55 (Wizard Based screen).
    From Page 55 (third page) of my application, When I click on Finish Button (Submit Button), a PLSQL Procedure is called which inserts values in 5 to 6 tables on a schema. The Success message include Article &DOCID. successfully Added.
    When I return to the first Page which is Page 24, it displays no value for DOCID.
    Sample Example =
    DECLARE
    DOCID VARCHAR2(30);
    BEGIN
    INSERT INTO SURE_DOCUMENT
    DOCUMENT_ID
    , DOCUMENT_TYPE
    , TITLE
    , STATUS
    , DISTRIBUTION
    , ARCHIVE_REVIEW_DATE
    , CONTENT_TYPE
    , IMPACT
    , SKILL_LEVEL
    , SOURCE
    , SERVER_MIN_VERSION
    , SERVER_MAX_VERSION
    , REFRESH_INTERVAL
    , LAST_REFRESH
    , FOLDER_ID
    , TOPIC_ID
    , NOTE_POSITION
    , OWNING_SITE
    , MODIFY_NUMBER
    , VERSION_STRING
    , ALIAS
    , EXTKEY
    , FORMAT_MODIFIER
    , DELETED
    , CREATED_BY
    , CREATED_DATE
    , CREATED_SITE
    , UPDATED_BY
    , UPDATED_DATE
    , UPDATED_SITE
    VALUES
    ( SURE_DOCUMENT_SEQ.NEXTVAL || '.1'
    , :ARTICLE_TYPE
    , :TITLE
    , :STATUS
    , :DISTRIBUTION
    , SYSDATE
    , 'TEXT/PLAIN'
    , 'LOW'
    , 'NOVICE'
    , 'ADHOC'
    , :RDBMS_MIN_VERSION
    , :RDBMS_MAX_VERSION
    , NULL
    , NULL
    , :FOLDER
    , :TOPIC
    , NULL
    , 1
    , 1
    , NULL
    , NULL
    , NULL
    , NULL
    , 'N'
    , HTMLDB_CUSTOM_AUTH.GET_USER
    , SYSDATE
    , 1
    , HTMLDB_CUSTOM_AUTH.GET_USER
    , SYSDATE
    , 1
    COMMIT;
    SELECT SURE_DOCUMENT_SEQ.CURRVAL INTO DOCID FROM DUAL;
    INSERT INTO SURE_DOCUMENT_CONTRIBUTORS
    DOCUMENT_ID
    , SURE_SEQUENCE
    , USER_ID
    , CONTRIBUTION_DATE
    , CONTRIBUTION_ROLE
    , MODIFY_NUMBER
    , REASON
    , DELETED
    , CREATED_BY
    , CREATED_DATE
    , CREATED_SITE
    , UPDATED_BY
    , UPDATED_DATE
    , UPDATED_SITE
    VALUES
    ( DOCID
    , 1
    , 'SKOPPALK.UK'
    , SYSDATE
    , 'Contributing Author'
    , 1
    , 'Contributing Author'
    , 'N'
    , HTMLDB_CUSTOM_AUTH.GET_USER
    , SYSDATE
    , 1
    , HTMLDB_CUSTOM_AUTH.GET_USER
    , SYSDATE
    , 1
    INSERT INTO SURE_DOCUMENT_LANGUAGES
    DOCUMENT_ID
    , SURE_SEQUENCE
    , LANGUAGE
    , DELETED
    , CREATED_BY
    , CREATED_DATE
    , CREATED_SITE
    , UPDATED_BY
    , UPDATED_DATE
    , UPDATED_SITE
    VALUES
    ( DOCID
    , 1
    , 'USAENG'
    , 'N'
    , HTMLDB_CUSTOM_AUTH.GET_USER
    , SYSDATE
    , 1
    , HTMLDB_CUSTOM_AUTH.GET_USER
    , SYSDATE
    , 1
    INSERT INTO KREW_WORKFLOW
    DOCUMENT_ID
    , PRIORITY
    , OWNER
    , REVIEWER
    , MODERATOR
    , ASSIGNED_DATE
    , DUE_DATE
    , CHECKED_OUT_BY
    , CHECKED_OUT_DATE
    , VERSION_STRING
    , DESCRIPTION
    , AUTHORS
    , COMMENTS
    , UPD_DATE
    , COPYSTATUS
    , COPYDISTRIBUTION
    , COPYFOLDERID
    VALUES
    DOCID
    , 3
    , DECODE(:OWNERS, NULL, 'UNASSIGNED',:OWNERS)
    , DECODE(:REVIEWER, NULL, 'UNASSIGNED',:REVIEWER)
    , DECODE(:MODERATOR, NULL, 'UNASSIGNED',:MODERATOR)
    , SYSDATE
    , SYSDATE + 7
    , NULL
    , NULL
    , 'SKOPPALK.UK'
    , :TITLE
    , :AUTHORS
    , :COMMENTS
    , SYSDATE
    , :STATUS
    , :DISTRIBUTION
    , :FOLDER
    INSERT INTO SURE_DOCUMENT_KEYWORDS
    DOCUMENT_ID
    , SURE_SEQUENCE
    , KEYWORD_TYPE
    , KEYWORD
    , DELETED
    , CREATED_BY
    , CREATED_DATE
    , CREATED_SITE
    , UPDATED_BY
    , UPDATED_DATE
    , UPDATED_SITE
    VALUES
    ( DOCID
    , 1
    , 'NOTE'
    , :KEYWORDS
    , 'N'
    , HTMLDB_CUSTOM_AUTH.GET_USER
    , SYSDATE
    , 1
    , HTMLDB_CUSTOM_AUTH.GET_USER
    , SYSDATE
    , 1
    INSERT INTO SURE_DOCUMENT_REFERENCES
    DOCUMENT_ID
    , SURE_SEQUENCE
    , REFERENCE_SOURCE
    , REFERENCE_DOCUMENT_ID
    , REFERENCE_TYPE
    , REFERENCE_DESCRIPTION
    , DELETED
    , CREATED_BY
    , CREATED_DATE
    , CREATED_SITE
    , UPDATED_BY
    , UPDATED_DATE
    , UPDATED_SITE
    VALUES
    ( DOCID
    , 1
    , 'NOTE'
    , DOCID || '.1'
    , 'NOTE'
    , :REFERENCES
    , 'N'
    , HTMLDB_CUSTOM_AUTH.GET_USER
    , SYSDATE
    , 1
    , HTMLDB_CUSTOM_AUTH.GET_USER
    , SYSDATE
    , 1
    INSERT INTO SURE_DOCUMENT_PLATFORMS
    DOCUMENT_ID
    , SURE_SEQUENCE
    , PLATFORM_ID
    , MIN_VERSION
    , MAX_VERSION
    , DELETED
    , CREATED_BY
    , CREATED_DATE
    , CREATED_SITE
    , UPDATED_BY
    , UPDATED_DATE
    , UPDATED_SITE
    VALUES
    ( DOCID
    , 1
    , :PLATFORMS
    , NULL
    , NULL
    , 'N'
    , HTMLDB_CUSTOM_AUTH.GET_USER
    , SYSDATE
    , 1
    , HTMLDB_CUSTOM_AUTH.GET_USER
    , SYSDATE
    , 1
    INSERT INTO SURE_DOCUMENT_PRODUCTS
    DOCUMENT_ID
    , SURE_SEQUENCE
    , PRODUCT_ID
    , COMPONENT_ID
    , MIN_VERSION
    , MAX_VERSION
    , DELETED
    , CREATED_BY
    , CREATED_DATE
    , CREATED_SITE
    , UPDATED_BY
    , UPDATED_DATE
    , UPDATED_SITE
    VALUES
    ( DOCID
    , 1
    , :PRODUCTS
    , NULL
    , NULL
    , NULL
    , 'N'
    , HTMLDB_CUSTOM_AUTH.GET_USER
    , SYSDATE
    , 1
    , HTMLDB_CUSTOM_AUTH.GET_USER
    , SYSDATE
    , 1
    COMMIT;
    END;
    The Success message is as follows:
    Article &DOCID. Created/Updated Successfully

    Shivanand,
    There's no need to post that much code when you could create a very short test case that demonstrates only the problem you are having.
    You're using &NAME. notation on something that isn't a page or application item. You can't reference PL/SQL variables that way (or any other way) outside the PL/SQL scope. For your situation, you could create a page item named P55_DOCID and assign it a value in the PL/SQL process (:P55_DOCID := DOCID;), then reference &P55_DOCID. in HTML areas like the success message.
    Scott

  • How to improve performance using bulk collects with plsql tables or arrays

    Hi All,
    my procedure is like this
    declare
    cursor c1 is select ----------------------
    begin
    assigning to variables
    validations on that variables
    --50 validations are here --
    insert into a table
    end;
    we have created indexes on primary keys,
    i want to use
    DECLARE
    CURSOR a_cur IS
    SELECT program_id
    FROM airplanes;
    TYPE myarray IS TABLE OF a_cur%ROWTYPE;
    cur_array myarray;
    BEGIN
    OPEN a_cur;
    LOOP
    FETCH a_cur BULK COLLECT INTO cur_array LIMIT 100;
    ***---------can i assign cursor data to the plsql table variables or array***
    ***validate on the pl sql variable as---***
    i
    nsert into a table
    EXIT WHEN a_cur%NOTFOUND;
    END LOOP;
    CLOSE a_cur;
    END;
    Edited by: Veekay on Oct 21, 2011 4:28 AM

    Fastest way often is this:
    insert /*+append */
    into aTable
    select * from airplanes;
    commit;The select and insert part can even be done in parallel if needed.
    However if the oparation is complex or the dataset is very very very very very large or the programmer is decent but not excellent then the bulk approach should be considered. It is often a pretty stable and linear scaling approach.
    The solution depends a little on the database version.
    LOOP
      FETCH a_cur BULK COLLECT INTO cur_array LIMIT 100;
      EXIT WHEN a_cur.count = 0;
      forall i in a_cur.first.. a_cur.last
      insert into aTable (id)
      values (a_cur(i));
    END LOOP;
    ...If you have more then one column then you might need a single collection for each column. Other possibilities depend on the db version.
    Also: do not exit using a_cur%NOTFOUND. This is wrong! You might loose records from the end of the data set.

  • How to assign the output of a function to a text area: a PLSQL challenge

    I have a function that returns a PLSQL table of varchar4(4000)
    Here is its signature in a package:
    create or replace package researcher_request_pk
    is
    TYPE query_table_type is table of varchar2(4000) index by binary_integer;
    FUNCTION RequestSQL(P_RRQ_ID in number) return query_table_type;
    end;
    I use this to get around the 32k limit on clobs and varchar2 variables
    I want to assign the output of the function to a text area. I've tried the following PLSQL in a dynamic action and also as the source attribute of the Text Area but it doesn't populate the text area.
    Here is the code i'm using
    declare
    v_table researcher_request_pk.query_table_type;
    begin
    v_table:=researcher_request_pk.RequestSQL(:P64_RRQ_ID);
    for i in 1..v_table.count loop
    htp.prn(v_table(i));
    end loop;
    end;
    Any ideas on the correct syntax to do this?
    thanks in advance
    PaulP

    Thanks for your reply
    The function does populate the PLSQL table with data. e.g. If I place that exact code in a PLSQL region it generates the output on the screen with no problems. The problem is just generating the output into the text area.
    I want the text area to display the output of the PLSQL table (-a dynamic select SQL statement) which I then plan to execute to return records.( i.e. I've build my own runtime query builder)
    My plan is to allow the user to edit the SQL output first before sending the statement for execution.
    Funnily enough I do get the very first word of the first cell appearing, namely 'SELECT' but nothing else. Maybe the "||" that follows has something to do with the rest of it not appearing?? hmmm... will experiment more.
    thanks
    PaulP

Maybe you are looking for