How to return a VARRAY datatype in a stored procedure

I have declared a type using
create type list1 as VARRAY(1000) of number(5);
I want to return a list of values from a stored procedure. I created a stored procedure using
create procedure getlist(mylist OUT list1) is
begin
end;
The type and procedure creation was successful. But when I call this stored procedure from a PL/SQL module I get the following error.
ORA-06531: Reference to uninitialized collection
The PL/SQl module is
declare
s1 list1(1,2);
begin
getlist(s1);
end;
I want the procedure to return around 1000 values. Any solutions.
Mohan
null

<BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica">quote:</font><HR>Originally posted by MOHAN [email protected]:
I have declared a type using
create type list1 as VARRAY(1000) of number(5);
I want to return a list of values from a stored procedure. I created a stored procedure using
create procedure getlist(mylist OUT list1) is
begin
end;
The type and procedure creation was successful. But when I call this stored procedure from a PL/SQL module I get the following error.
ORA-06531: Reference to uninitialized collection
The PL/SQl module is
declare
s1 list1(1,2);
begin
getlist(s1);
end;
I want the procedure to return around 1000 values. Any solutions.
Mohan<HR></BLOCKQUOTE>
I am also having the same problem ..plzz help me someone
null

Similar Messages

  • How to return varied no.of columns from Stored Procedure?

    Hi All,
    I have situation where I need to return with columns which will keep changing. At any given point of time I will be returning 10 columns. But there are some conditions where I need to add multiples of 4 no.of columns.
    Ex: Always 10 columns.
    If condition1
    return 10 + 4 columns
    if condition2
    return 10 + 4 + 4 columns
    How can I handle this?
    Can any one help me here.
    Thanks
    Vikram

    Change the stored procedure to a single column set return type like returning nulls if column is not applicable.
    Alternate, split the sp to single column set sp-s.
    You can get the returned column set by SELECT TOP(0) * INTO spxColumns FROM OPENQUERY..... method:
    http://sqlusa.com/bestpractices2005/selectfromsproc/
    http://www.sqlusa.com/bestpractices/select-into/
    Note, however, the OPENQUERY method is not completely clean.
    Kalman Toth Database & OLAP Architect
    Free T-SQL Scripts
    New Book / Kindle: Exam 70-461 Bootcamp: Querying Microsoft SQL Server 2012

  • How to set pdn12.trancat mandatory in this stored procedure?

    How can i make PDN12.transcat in this Stored Procedure
    USE [zIRC DEMO]
    GO
    /****** Object:  StoredProcedure [dbo].[SP_CHECK_MANDATORY_IN_OPDN]    Script Date: 03/07/2014 10:37:54 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER PROCEDURE [dbo].[SP_CHECK_MANDATORY_IN_OPDN]
      @list_of_cols_val_tab_del NVARCHAR(255), @error_message NVARCHAR(255) OUTPUT
    AS
    BEGIN
    --invoice type
      select
      @error_message='In header line number(s), '+ substring
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      where
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND isnull(OPDN.U_InvType,'')=''
      order by
      PDN1.LineNum FOR XML PATH ('')
      ),1
      ,LEN((
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      WHERE
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND isnull(OPDN.U_InvType,'')=''
      order by
      PDN1.LineNum FOR XML PATH ('')
      ))-1
      )+' Invoice Type is missing'
    -- num at card
      if(ISNULL(@error_message,'')='')
      BEGIN
      select
      @error_message='In header line number(s), '+ substring
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      where
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('M','D','S','L') AND isnull(OPDN.NumAtCard,'')=''
      order by
      PDN1.LineNum FOR XML PATH ('')
      ),1
      ,LEN((
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      WHERE
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('M','D','S','L') AND isnull(OPDN.NumAtCard,'')=''
      order by
      PDN1.LineNum FOR XML PATH ('')
      ))-1
      )+' Vendor ref. number is missing'
      END
    -- transporter
      if(ISNULL(@error_message,'')='')
      BEGIN
      select
      @error_message='In line number(s), '+ substring
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      where
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('M','D','S','L') AND isnull(OPDN.U_Transport,'')=''
      order by
      PDN1.LineNum FOR XML PATH ('')
      ),1
      ,LEN((
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      WHERE
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('M','D','S','L') AND isnull(OPDN.U_Transport,'')=''
      order by
      PDN1.LineNum FOR XML PATH ('')
      ))-1
      )+' Transporter is missing'
      END
    --dealer
      if(ISNULL(@error_message,'')='')
      BEGIN
      select
      @error_message='In line number(s), '+ substring
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      where
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('M','D','S','L') AND isnull(OPDN.U_dealer,'')=''
      order by
      PDN1.LineNum FOR XML PATH ('')
      ),1
      ,LEN((
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      WHERE
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('M','D','S','L') AND isnull(OPDN.U_Dealer,'')=''
      order by
      PDN1.LineNum FOR XML PATH ('')
      ))-1
      )+' Dealer is missing'
      END
    --base price
      if(ISNULL(@error_message,'')='')
      BEGIN
      select
      @error_message='In line number(s), '+ substring
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      where
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('M','D','S') AND isnull(PDN1.U_BasePrice,0)=0
      order by
      PDN1.LineNum FOR XML PATH ('')
      ),1
      ,LEN((
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      WHERE
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('M','D','S') AND isnull(PDN1.U_BasePrice,0)=0
      order by
      PDN1.LineNum FOR XML PATH ('')
      ))-1
      )+' Base Price is missing'
      END
    --taxcode
      if(ISNULL(@error_message,'')='')
      BEGIN
      select
      @error_message='In line number(s), '+ substring
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      where
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('M','D','S','L') AND isnull(PDN1.TaxCode,'')=''
      order by
      PDN1.LineNum FOR XML PATH ('')
      ),1
      ,LEN((
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      WHERE
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('M','D','S','L') AND isnull(PDN1.TaxCode,'')=''
      order by
      PDN1.LineNum FOR XML PATH ('')
      ))-1
      )+' Taxcode is Missing'
      END
    -- ed rate
      if(ISNULL(@error_message,'')='')
      BEGIN
      select
      @error_message='In line number(s), '+ substring
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      where
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('M','D','S') AND isnull(PDN1.U_EDRate,'')=''
      order by
      PDN1.LineNum FOR XML PATH ('')
      ),1
      ,LEN((
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      WHERE
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('M','D','S') AND isnull(PDN1.U_EDRate,'')=''
      order by
      PDN1.LineNum FOR XML PATH ('')
      ))-1
      )+' Excice Duty Rate is missing'
      END
    -- ed duty
      if(ISNULL(@error_message,'')='')
      BEGIN
      select
      @error_message='In line number(s), '+ substring
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      where
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('M','D','S') AND isnull(PDN1.U_EDuty,0)=0
      order by
      PDN1.LineNum FOR XML PATH ('')
      ),1
      ,LEN((
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      WHERE
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('M','D','S') AND isnull(PDN1.U_EDuty,0)=0
      order by
      PDN1.LineNum FOR XML PATH ('')
      ))-1
      )+' Excice Duty is missing'
      END
      if(ISNULL(@error_message,'')='')
      BEGIN
      select
      @error_message='In line number(s), '+ substring
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      where
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('D','S') AND ISNULL(PDN1.U_MfgInvNo,'')=''
      order by
      PDN1.LineNum FOR XML PATH ('')
      ),1
      ,LEN((
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      WHERE
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('D','S') AND ISNULL(PDN1.U_MfgInvNo,'')=''
      order by
      PDN1.LineNum FOR XML PATH ('')
      ))-1
      )+' Mfg. invoice number is missing'
      END
      if(ISNULL(@error_message,'')='')
      BEGIN
      select
      @error_message='In line number(s), '+ substring
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      where
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('D','S') AND isnull(convert(nvarchar(10),U_MfgInvDt,112),'')=''
      order by
      PDN1.LineNum FOR XML PATH ('')
      ),1
      ,LEN((
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      WHERE
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('D','S') AND isnull(convert(nvarchar(10),U_MfgInvDt,112),'')=''
      order by
      PDN1.LineNum FOR XML PATH ('')
      ))-1
      )+' Mfg. invoice date is missing'
      END
      if(ISNULL(@error_message,'')='')
      BEGIN
      select
      @error_message='In line number(s), '+ substring
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      where
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('D','S') AND PDN1.U_MfgQty=0
      order by
      PDN1.LineNum FOR XML PATH ('')
      ),1
      ,LEN((
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      WHERE
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('D','S') AND PDN1.U_MfgQty=0
      order by
      PDN1.LineNum FOR XML PATH ('')
      ))-1
      )+' Mfg. invoice Quantity is missing'
      END
      if(ISNULL(@error_message,'')='')
      BEGIN
      select
      @error_message='In line number(s), '+ substring
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      where
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('D','S') AND PDN1.U_MfgValue=0
      order by
      PDN1.LineNum FOR XML PATH ('')
      ),1
      ,LEN((
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      WHERE
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('D','S') AND PDN1.U_MfgValue=0
      order by
      PDN1.LineNum FOR XML PATH ('')
      ))-1
      )+' Mfg. Assessble value is missing'
      END
      if(ISNULL(@error_message,'')<>'')
      BEGIN
      return -1
      END
      else
      begin
      return 0
      end
    END

    Hello Nabil
    Could you explain what is the point of making PDN12.Trancat mandatory? I am asking this because at my end that field has got NULL value in all PDN12 table entries, and I am not sure if this field can be updated manually when creating a Good Receipt PO. Considering this, it seems that by making this field mandatory TN will block all Good Receipts from addition.
    Regards

  • How can I automatically prepend comment blocks to stored procedures?

    How can I automatically prepend comment blocks to stored procedures?
    In my organization, the standard is to comment all stored procedures with a comment block that looks like this:
    /*-- =============================================
    -- Created by: <Owner>
    -- Created date: 01/08/2012
    -- Purpose: Inserts new setting value, code and description
    -- Modifications:
    -- Modified by: <Owner>
    -- Modification date: 01/08/2012
    -- Purpose: Inserts new setting value, code and description
    -- =============================================*/Thanks.
    select * from v$version;
    BANNER                                                                        
    Oracle Database 11g Express Edition Release 11.2.0.2.0 - Production             
    PL/SQL Release 11.2.0.2.0 - Production                                          
    CORE     11.2.0.2.0     Production  Edited by: xDeviates on 01-ago-2012 7:37
    Edited by: xDeviates on 01-ago-2012 8:31

    Hi,
    If I want to write a package called pk_fubar, I copy the following script and call it fubar.sql
    --     ==========  package_name.sql starts here  ==========
    --     Package_Name.sql
    SPOOL     &home_dir\package_name.lst
    PROMPT     .     H   H  EEEE     A    DDDD
    PROMPT     .     H   H  E       A A   D   D
    PROMPT     .     HHHHH  EEE    A   A  D   D
    PROMPT     .     H   H  E      AAAAA  D   D
    PROMPT     .     H   H  EEEEE  A   A  DDDD
    @@package_name_head
    PROMPT     .     BBBB    OOO   DDDD   Y   Y
    PROMPT     .     B   B  O   O  D   D   Y Y
    PROMPT     .     BBBB   O   O  D   D    Y
    PROMPT     .     B   B  O   O  D   D    Y
    PROMPT     .     BBBB    OOO   DDDD     Y
    @@package_name_body
    SPOOL     OFF
    @@package_name_test
    -- EXIT
    --     ==========  package_name_head.sql starts here  ==========
    CREATE OR REPLACE PACKAGE     pk_package_name
    AS
    FUNCTION     sign_in
    (     in_user_name     IN     VARCHAR2
    ,     in_password_txt     IN     VARCHAR2
    RETURN     PLS_INTEGER
    END     pk_package_name;
    SHOW ERRORS;
    GRANT     EXECUTE     ON pk_package_name     TO schema_name_some_role;
    --     ==========  package_name_body.sql starts here  ==========
    CREATE OR REPLACE PACKAGE BODY     pk_package_name
    AS
    --  Procedures related to SCHEMA_NAME ...
    --  2012 July 23 -- Package started with proc_x.  (Frank Kulash)
    --     **   local procedures and variables   **
    --     **   x   **
    --     **   initialization section   **
    --     The following code is executed once per session, when the package is loaded.
    BEGIN
         set_var     ( 'DT_FMT_TXT'
              , 'YYYY-MM-DD HH24:MI:SS'
    END     pk_package_name;
    SHOW ERRORS;
    --     ==========  package_name_test.sql starts here  ==========
    --     PACKAGE_NAME_TEST.SQL -- Test procedures in schema_name.pk_package_name
    SET     DOCUMENT     OFF
    SET     SERVEROUTPUT     ON     SIZE     10000
    ALTER SESSION     SET NLS_DATE_FORMAT = 'DD-Mon-YYYY HH24:MI:SS';
    SPOOL     @@package_name_test.lst
    PROMPT
    PROMPT     ***********************
    PROMPT     **  Testing x  **
    PROMPT     ***********************
    PROMPT
    SPOOL     OFFThen I replace package_name with fubar, and schema_name with the actual schema name. Finally, I cut off parts from the end to create fubar_test.sql, fubar_body.sql and fubar_head.sql. You could easily include a multi-line procedure comment template in this script. Every time you add a procedure or function, ciopy and paste that comment template, and then modify the copy.

  • How to Store the result sets of a stored procedure that is returning more that one result set in two different table ?

    Hi Experts,
       I have on stored procedure which returns mote than one resultset i want that to store in two different temp table how can achieve this in SQL server.
     following is the stored procedure and table that i need to create.
    create procedure GetData as begin select * from Empselect * from Deptend 
    create table #tmp1 (Ddeptid int, deptname varchar(500),Location varchar(100))
    Insert into #tmp1 (Ddeptid , deptname ,Location )
    exec GetData
    create table #tmp (empid int , ename varchar(500),DeptId int , salary int)
    Insert into #tmp (empId,ename,deptId,salary)
    exec GetData
    Niraj Sevalkar

    You cant get two resultsets out of SP like this. The workaround is to merge and bring the resultsets.
    For this number of columns as well as corresponding datatypes have to be compatible. Also you will need one additional column which indicates resultset value. Then use this as filter to get your desired resultset out
    create procedure GetData as
    begin
    select 'resultset1' as Cat,*,.. N columns from Emp
    union all
    select 'resultset2' as Cat,*,.. N columns from Dept
    end
    create table #tmp1 (Ddeptid int, deptname varchar(500),Location varchar(100))
    Insert into #tmp1 (Ddeptid , deptname ,Location )
    Select column1,column2,column3
    from OPENROWSET('SQLOLEDB','Data Source=Server_name;Trusted_Connection=yes;
    Integrated Security=SSPI','Execute yourdb..GetData')
    WHERE Cat = 'resultset1'
    create table #tmp (empid int , ename varchar(500),DeptId int , salary int)
    Insert into #tmp (empId,ename,deptId,salary)
    Select column1,column2,column3, column4
    from OPENROWSET('SQLOLEDB','Data Source=Server_name;Trusted_Connection=yes;
    Integrated Security=SSPI','Execute yourdb..GetData')
    WHERE Cat = 'resultset2'
    also see
    http://sqlblogcasts.com/blogs/madhivanan/archive/2007/11/26/select-columns-from-exec-procedure-name-is-this-possible.aspx
    Another method is to populate table with relevant resultset within procedure itself and then select from the table directly outside.
    Please Mark This As Answer if it solved your issue
    Please Vote This As Helpful if it helps to solve your issue
    Visakh
    My Wiki User Page
    My MSDN Page
    My Personal Blog
    My Facebook Page

  • How to create a LOV based on a stored procedure returning a cursor

    Hello,
    I've tried to search the forum, but did not find much. We are facing a problem of large LOVs and creating large TMP files on the app server. Our whole application is drived by store procedures. LOVs are built manually by fetching data from cursors returned from stored procedures. That creates the issue when whole LOV needs to be stored in the memory and thus the TMP files.
    Is there anyway how to create LOV based on a procedure returning cursor ?
    Thank you,
    Radovan

    Hello,
    As of now we populate the record group by looping through the ref cursor and adding rows into it. Is there a better way? That forces the whole record group to be stored in a memory on the app server.
    Thank you,
    Radovan

  • How to stop SQL Server Agent Job if Stored Procedure returns value 0

    I have SQL Server 2012 SSIS.
    I have 2 SSIS packages.
    I have created SQL Server Agent Job for running packages.
    I have created steps. If first step have run succesfully next step is run.
    I have need to add new logic.
    I have validation stored procedure, which validate DB table values and returns 1 or 0.
    I would like to create logic where first of all this SP is runned. Return value of SP determines if steps are run or not.
    I was thinking to use Execute SQL Task for running SP.
    If value 1 is returned, then run rest of Tasks is run.
    If value 0 is returned, what should I do so that Job is stopped? I need assistance! 
    I want current step to stop never moved to next step.
    Is there any SSIS tasks, which can stop the Job?
    Or should I make Step for running validation SP?
    How to do so that if value 0 is returned stop Job.
    Kenny_I

    Please refer the below link:
    http://technet.microsoft.com/en-us/library/aa260308(v=sql.80).aspx
    Please read Remarks carefully!!!
    Remarks
    If a job is currently executing a step of type CmdExec, the process being run (for example, MyProgram.exe) is forced to end prematurely. Premature ending can result in unpredictable behavior such as files in use by the process being held open. Consequently,
    sp_stop_job should be used only in extreme circumstances if the job contains steps of type CmdExec.
    Permissions
    Execute permissions default to the public role in the
    msdb database. A user who can execute this procedure and is a member of the
    sysadmin fixed role can stop any job. A user who is not a member of the
    sysadmin role can use sp_stop_job to stop only the jobs he/she owns.
    When sp_stop_job is invoked by a user who is a member of the
    sysadmin fixed server role, sp_stop_job will be executed under the security context in which the SQL Server service is running. When the user is not a member of the
    sysadmin group, sp_stop_job will impersonate the SQL Server Agent proxy account, which is specified using
    xp_sqlagent_proxy_account. If the proxy account is not available,
    sp_stop_job will fail. This is only true for Microsoft® Windows® NT 4.0 and Windows 2000. On Windows 9.x, there is no impersonation and
    sp_stop_job is always executed under the security context of the Windows 9.x user who started SQL Server.

  • Passing CLOB datatype to a stored procedure

    Hi,
    How do I pass a CLOB value to a stored procedure?
    I am creating a stored procedure which appends a value to a CLOB datatype. The procedure has 2 in parameter (one CLOB and one CLOB). The procedure is compiled but I'm having problem executing it. Below is a simplified version of the procedure and the error given when the procedure is executed.
    SQL> CREATE OR REPLACE PROCEDURE prUpdateContent (
    2 p_contentId IN NUMBER,
    3 p_body IN CLOB)
    4 IS
    5 v_id NUMBER;
    6 v_orig CLOB;
    7 v_add CLOB;
    8
    9 BEGIN
    10 v_id := p_contentId;
    11 v_add := p_body;
    12
    13 SELECT body INTO v_orig FROM test WHERE id=v_id FOR UPDATE;
    14
    15 DBMS_LOB.APPEND(v_orig, v_add);
    16 commit;
    17 END;
    18 /
    Procedure created.
    SQL> exec prUpdateContent (1, 'testing');
    BEGIN prUpdateContent (1, 'testing'); END;
    ERROR at line 1:
    ORA-06550: line 1, column 7:
    PLS-00306: wrong number or types of arguments in call to 'PRUPDATECONTENT'
    ORA-06550: line 1, column 7:
    PL/SQL: Statement ignored
    Any help or hints please.
    null

    sorry I made a mistake with the in parameter types - it's one NUMBER and one CLOB.

  • How do I retrieve a variable from a stored procedure in Access?

    Given a stored procedure like the one below,
    PROCEDURE getSomething(
                   pVar1           in float,
                   pVar2               in float,
                   pVar3               in float,
                   pVar4               in float,
                   pResults          out varchar2
    How would I retrieve the value in pResults using VBA on Access? Thanks.

    Using this, you can set the value to the session bean
    <c:set property="docID" target="${SessionBean1}" value="${pg_view_doc.hiddenField3.value}"/>
    But before that you have to create a property called docid in the sessionbean1.
    So once the property is set, through getDocID() method u can retrieve the value
    ex: String value=getSessionBean1().getDocID();
    will return the value in the required JSF Page bean

  • How to fetch %ROWTYPE OUT param of  a stored procedure from Java program?

    I have a stored procedure that has IN / OUT parameter as table_name%ROWTYPE.
    From a java program how can I access this ROWTYPE variable?
    I tried all possible documentation and none of the explains whether or not this is supported.
    My use case expect exactly 1 record from the procedure and we would prefer not to use REF CURSOR.
    Is there a way to achieve this? If so, can someone help me with it by posting the sample code to achieve this?
    I tried all the possible OracleTypes to register the OutParameter and they all fail.
    Looks like there isn't any equivalent of %ROWTYPE in OracleTypes either.
    If you need, I can post my sample procedure that uses %ROWTYPE as OUT parameter.
    I really appreciate your help in this regard.
    - Karthik

    Hi,
    If "returning only 1 record" the showstopper for not using Ref Cursor, you might want to reconsider because as you probably know, the ref cursor is only a pointer and requires additional step to retrieve the data.
    Kuassi

  • How do i handle out parameter from a stored procedure in a vb form?

    hi all,
    I want to return a varchar2(500) type of out parameter from a pl/sql stored procedure to a vb form?? how do i do this??
    regards
    akshay

    Well, when you create the parameter collection for your command object, just set the correct value for the direction component.
    You would set it to one of the below, depending on if the parameter is IN OUT or only OUT:
            <parameter_obj>.Direction = ParameterDirectionEnum.adParamInputOutput
            <parameter_obj>.Direction = ParameterDirectionEnum.adParamOutput

  • How to retrieve the outer parameter of a stored procedure in XSQL page

    I have to call a stored procedure in the xsql page that returns a resultset (ie. oracle table/record type) through an outer paramter. Is there any built-in xsql action tag available to get the parameter and present
    it in xml on the page? please help, thanks.

    You cant get two resultsets out of SP like this. The workaround is to merge and bring the resultsets.
    For this number of columns as well as corresponding datatypes have to be compatible. Also you will need one additional column which indicates resultset value. Then use this as filter to get your desired resultset out
    create procedure GetData as
    begin
    select 'resultset1' as Cat,*,.. N columns from Emp
    union all
    select 'resultset2' as Cat,*,.. N columns from Dept
    end
    create table #tmp1 (Ddeptid int, deptname varchar(500),Location varchar(100))
    Insert into #tmp1 (Ddeptid , deptname ,Location )
    Select column1,column2,column3
    from OPENROWSET('SQLOLEDB','Data Source=Server_name;Trusted_Connection=yes;
    Integrated Security=SSPI','Execute yourdb..GetData')
    WHERE Cat = 'resultset1'
    create table #tmp (empid int , ename varchar(500),DeptId int , salary int)
    Insert into #tmp (empId,ename,deptId,salary)
    Select column1,column2,column3, column4
    from OPENROWSET('SQLOLEDB','Data Source=Server_name;Trusted_Connection=yes;
    Integrated Security=SSPI','Execute yourdb..GetData')
    WHERE Cat = 'resultset2'
    also see
    http://sqlblogcasts.com/blogs/madhivanan/archive/2007/11/26/select-columns-from-exec-procedure-name-is-this-possible.aspx
    Another method is to populate table with relevant resultset within procedure itself and then select from the table directly outside.
    Please Mark This As Answer if it solved your issue
    Please Vote This As Helpful if it helps to solve your issue
    Visakh
    My Wiki User Page
    My MSDN Page
    My Personal Blog
    My Facebook Page

  • Resultset returns null while calling a DB2 stored procedure using hibernat

    Hi All ,
    I am trying to call a db2 stored proc with cursor open from my java code but it always returns me null results though it executes fine when I call the procedure from the command line
    Java code....................
    CallableStatement stmt3 = EyeHibernateApp.getHibernateSession().connection().prepareCall("{call answers_select_id( ? )}");
    stmt3.setString(1,20);
    stmt3.execute();
    ResultSet rs1 = stmt3.getResultSet();
    System.out.println("rs1 " + rs1); --> returns null
    procedure-------------
    CREATE PROCEDURE answers_select_id (IN question_id bigint )
    P1:BEGIN
    DECLARE cursor1 CURSOR WITH RETURN TO CLIENT FOR
    SELECT a.answer_id from answers as a where a.question_id = question_id;
    open cursor1;
    END P1;
    I am using the same java code with mysql stored procs . It works fine there but I assume open cursors in db2 stored proc is causing the problem . If I can help it , I need to maintain the same java code for mysql ad db2 . Please help me ...
    Thanks,
    Av~

    Hi,
    I am trying to do something like this but with Oracle stored procedure which returns an associate array and a cursor and these are defined as INOUT. I am not finding a way how to do it with editable row set. Can you plese list the steps used to make things work.
    Thanks.

  • Resultset returns null while calling a DB2 stored procedure using hibernate

    Hi All ,
    I am trying to call a db2 stored proc with cursor open from my java code but it always returns me null results though it executes fine when I call the procedure from the command line
    Java code....................
    CallableStatement stmt3 = EyeHibernateApp.getHibernateSession().connection().prepareCall("{call answers_select_id( ? )}");
    stmt3.setString(1,20);
    stmt3.execute();
    ResultSet rs1 = stmt3.getResultSet();
    System.out.println("rs1 " + rs1); --> returns null
    procedure-------------
    CREATE PROCEDURE answers_select_id (IN question_id bigint )
    P1:BEGIN
    DECLARE cursor1 CURSOR WITH RETURN TO CLIENT FOR
    SELECT a.answer_id from answers as a where a.question_id = question_id;
    open cursor1;
    END P1;
    I am using the same java code with mysql stored procs . It works fine there but I assume open cursors in db2 stored proc is causing the problem . If I can help it , I need to maintain the same java code for mysql ad db2 . Please help me ...
    Thanks,
    Av~

    Hi,
    I am trying to do something like this but with Oracle stored procedure which returns an associate array and a cursor and these are defined as INOUT. I am not finding a way how to do it with editable row set. Can you plese list the steps used to make things work.
    Thanks.

  • 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

Maybe you are looking for