Cursor as parameter

How I can paste cursor as parameter?
I am trying to paste cursor variable1 as a parameter in cursor variable2, but I'm getting error: PLS-00488: invalid variable declaration: object 'VARIABLE1' must be a type or subtype.
This is the code:
DECLARE
CURSOR variable1 IS SELECT DEPARTMENT_ID from EMPLOyees;
CURSOR variable2 (vvar variable1) IS SELECT FIRST_NAME,LAST_NAME from EMPLOyees where DEPARTMENT_ID=vvar;
BEGIN
OPEN variable1;
for j in variable1 loop
OPEN variable2 (j.DEPARTMENT_ID);
for i in variable2 loop
dbms_output.put_line(i.First_name ||' '||i.LAST_NAME);
END loop;
END loop;
end;

Buga wrote:
This si what you need.
What you are doing is not correct.And what you are showing in your code is also wrong.
Why are you manually coding a nested loop join in PL/SQL. Why are you not using SQL and have it doing the join instead?
PL/SQL is slower than SQL when it comes to processing SQL data.
There is a very basic rule that describes this:
Maximize SQL. Minimize PL/SQL+
In other words, do not reinvent the wheel using PL/SQL - use SQL to its full capabilities. That ensures performance and scalability.

Similar Messages

  • How to call a Stored Procedure with a REF CURSOR output parameter

    I am looking forward an example that call a stored function/procedure with a REF CURSOR output parameter and get the result.
    In other words, I have a stored function/procedure that execute a SELECT statement using the OCI library and then it could get the values of each column and each row.
    I put a code snippet, it have only the main thing to call a simple stored procedure and print the name of each column of the cursor, but I couldn´t to print out the values in the table that call the stored procedure.
    I understand that the next step, it is to call a OCIStmtFetch.
    How to associate the cursor with the OCIStmtFetch?
    If you need more information, only tell me.
    I am using ANSI C with HP-UX Operative System (C for HP-UX) and Oracle 10g.
    Regards.
    Antonio Garcia
    /* callOracleSP */
    #include <stdio.h>
    #include <string.h>
    #include <oci.h>
    #include <stdlib.h>
    char* pConnectChar ="server";
    char* pUsernameChar = "user";
    char* pPasswordChar = "passwd";
    char* sqlCharArray1 = "BEGIN SP_GETCITIES(:s, :c); END;";
    int retval;
    ub4 parmcnt=0;
    ub4 pos2=0;
    text *pcoln[20];
    ub4 namelen[20];
    char state_key[5];
    OCIStmt* pOciStatement;
    OCIStmt* pOciStatCursor;
    OCIError* pOciError;
    OCIEnv* pOciEnviron;
    OCIServer* pOciServer;
    OCISession* pOciSession;
    OCISvcCtx* pOciServiceContext;
    OCIBind* pOciBind[500];
    OCIParam* pOciParam;
    int main()
    retval = OCIEnvCreate(&pOciEnviron, OCI_DEFAULT, NULL, NULL, NULL, NULL,0,NULL);
    retval = OCIEnvInit(&pOciEnviron, OCI_DEFAULT, 0, NULL);
    retval = OCIHandleAlloc(pOciEnviron, (void **)&pOciError, OCI_HTYPE_ERROR, 0, NULL);
    retval = OCIHandleAlloc(pOciEnviron, (void **)&pOciServiceContext, OCI_HTYPE_SVCCTX, 0, NULL);
    retval = OCIHandleAlloc(pOciEnviron, (void **)&pOciStatement, OCI_HTYPE_STMT, 0, NULL);
    retval = OCILogon(pOciEnviron,pOciError,&pOciServiceContext,(unsigned char *)pUsernameChar,
         strlen(pUsernameChar), (unsigned char *)pPasswordChar, strlen(pPasswordChar),
                   (unsigned char *)pConnectChar,strlen(pConnectChar));
    printf("OCILogon retval=%d\n",retval);
    retval = OCIStmtPrepare(pOciStatement, pOciError, (unsigned char *)sqlCharArray1,strlen(sqlCharArray1),
         OCI_NTV_SYNTAX, OCI_DEFAULT);
    printf("StmtPrepare retval=%d\n",retval);
    retval = OCIHandleAlloc(pOciEnviron, (void **)&pOciStatCursor, OCI_HTYPE_STMT, 0, NULL);
    retval = OCIBindByPos(pOciStatement,&pOciBind[0], pOciError, (ub4) 1, (void *)&state_key,
         (sb4) sizeof(state_key), SQLT_STR, (void *) 0, (ub2 *) 0, (ub2 *)0,(ub4)0, (ub4 *)0, (ub4) OCI_DEFAULT);
    printf("BindByPos OCI_HTYPE_STMT retval=%d\n",retval);
    retval = OCIBindByPos(pOciStatement,&pOciBind[1], pOciError, (ub4) 2, (void *)&pOciStatCursor,
         (sb4) 0, SQLT_RSET, (void *) 0, (ub2 *) 0, (ub2 *)0,(ub4)0, (ub4 *)0, (ub4) OCI_DEFAULT);
    printf("BindByPos OCI_HTYPE_STMT retval=%d\n",retval);
    strcpy(state_key,"CA");
    retval = OCIStmtExecute(pOciServiceContext, pOciStatement, pOciError, (ub4)1, (ub4) 0,
         (OCISnapshot *)NULL, (OCISnapshot *)NULL, (ub4) OCI_DEFAULT);
    printf("StmtExecute retval=%d\n",retval);
    /* How to get the values of the cursor? */
    /* Get number of parameters of the Cursor */
    OCIAttrGet((void *) pOciStatCursor, (ub4)OCI_HTYPE_STMT, (void*) &parmcnt,(ub4 *) 0,
         (ub4)OCI_ATTR_PARAM_COUNT, pOciError);
    printf("\nNumber of parameters of the cursor = %d\n",parmcnt);
    for (int pos = 1; pos <= (int)parmcnt; pos++)
         OCIAttrGet((void *) pOciStatCursor, (ub4)OCI_HTYPE_STMT, (void*) &pos2,(ub4 *) 0,
              (ub4)OCI_ATTR_CURRENT_POSITION, pOciError);
         retval = OCIParamGet((void *)pOciStatCursor, (ub4)OCI_HTYPE_STMT, pOciError, (void **)&pOciParam,
              (ub4) pos );
         OCIAttrGet((void*) pOciParam, (ub4) OCI_DTYPE_PARAM,(void*) &pcoln[pos-1],(ub4 *) &namelen[pos-1],
              (ub4) OCI_ATTR_NAME,(OCIError *)pOciError );
    for (int i = 1; i <=(int)parmcnt; i++)
    printf("Column %i\tNAME = %.*s\n",i,namelen[i-1],pcoln[i-1]);
    return 0;
    This is the script that create the table, insert records and create the stored procedure
    CREATE TABLE CITIES (
         STATE_CODE     VARCHAR2(2) NULL,
         CITY_CODE      NUMBER(15,5) NULL,
         CITY_NAME      VARCHAR2(30) NULL
    INSERT INTO CITIES(STATE_CODE, CITY_CODE, CITY_NAME)
    VALUES('CA', 30, 'SAN DIEGO')
    INSERT INTO CITIES(STATE_CODE, CITY_CODE, CITY_NAME)
    VALUES('CA', 40, 'SACRAMENTO')
    INSERT INTO CITIES(STATE_CODE, CITY_CODE, CITY_NAME)
    VALUES('FL', 10, 'MIAMI')
    INSERT INTO CITIES(STATE_CODE, CITY_CODE, CITY_NAME)
    VALUES('FL', 20, 'ORLANDO')
    INSERT INTO CITIES(STATE_CODE, CITY_CODE, CITY_NAME)
    VALUES('NY', 10, 'NEW YORK')
    INSERT INTO CITIES(STATE_CODE, CITY_CODE, CITY_NAME)
    VALUES('NY', 20, 'ALBANY')
    INSERT INTO CITIES(STATE_CODE, CITY_CODE, CITY_NAME)
    VALUES('CA', 10, 'LOS ANGELES')
    INSERT INTO CITIES(STATE_CODE, CITY_CODE, CITY_NAME)
    VALUES('CA', 20, 'SAN FRANCISCO')
    CREATE OR REPLACE PACKAGE globalPkg AUTHID CURRENT_USER AS
    /* The following are T/SQL specific global variables. */
    TYPE RCT1 IS REF CURSOR;/*new weak cursor definition*/
    END globalPkg;
    CREATE OR REPLACE PROCEDURE SP_ADDCITY(
    P_STATE_CODE IN VARCHAR,
    P_CITY_CODE      IN NUMBER,
    P_CITY_NAME      IN VARCHAR2,
    P_RETURN IN OUT NUMBER)
    AS
    StoO_error INTEGER;
    StoO_selcnt INTEGER;
    StoO_rowcnt INTEGER;
    StoO_errmsg VARCHAR2(255);
         BEGIN
    StoO_rowcnt := 0;
    StoO_error := 0;
    StoO_selcnt := 0;
    P_RETURN := 0;
    INSERT INTO CITIES (STATE_CODE, CITY_CODE, CITY_NAME)
    VALUES (P_STATE_CODE, P_CITY_CODE, P_CITY_NAME);
    StoO_rowcnt := SQL%ROWCOUNT;
    EXCEPTION
    WHEN TOO_MANY_ROWS THEN
    StoO_rowcnt := 2;
    WHEN OTHERS THEN
    StoO_rowcnt := 0;
    StoO_selcnt := 0;
    StoO_error := SQLCODE;
    StoO_errmsg := SQLERRM;
              IF StoO_error != 0 THEN
    BEGIN
                   P_RETURN := 1;
         RETURN;
         END;
              END IF;
         END;
    CREATE OR REPLACE PROCEDURE SP_GETCITIES(
    STATE_KEY IN VARCHAR,
    RC1      IN OUT globalPkg.RCT1)
    AS
    StoO_error INTEGER;
    StoO_selcnt INTEGER;
    StoO_rowcnt INTEGER;
    StoO_errmsg VARCHAR2(255);
    BEGIN
    StoO_rowcnt := 0;
    StoO_error := 0;
    StoO_selcnt := 0;
    OPEN RC1 FOR
    SELECT STATE_CODE, CITY_CODE, CITY_NAME
    FROM CITIES
    WHERE STATE_CODE = STATE_KEY
    ORDER BY CITY_CODE;
    StoO_rowcnt := SQL%ROWCOUNT;
    EXCEPTION
    WHEN OTHERS THEN
    StoO_rowcnt := 0;
    StoO_error := SQLCODE;
    StoO_errmsg := SQLERRM;
         END;
    /

    Hi Mark,
    Thanks for your recommendations.
    I change the code with OCIDefineByPos, one for each parameter from cursor and then use the OCIStmtFetch.
    I don´t receive a error when call OCIDefineByPos, but when I call OCIStmtFetch receive a -1 error number.
    What is wrong with the code?
    The script is the same.
    I need your help!
    Best Regards!
    Antonio Garcia (Mexico)
    This the new code:
    #include <stdio.h>
    #include <string.h>
    #include <oci.h>
    #include <stdlib.h>
      char*   pConnectChar ="ORAC617";
      char*   pUsernameChar = "C617_005_DBO_01";
      char*   pPasswordChar = "Tempora1";
      char*   sqlCharArray1 = "BEGIN SP_GETCITIES(:s, :c); END;";
      int     retval;
      ub4 parmcnt=0;
      ub4 pos2=0;
      sb2   *c_indp;
      text *pcoln[20], *name,*name2;
      ub4 namelen[20],len;
      ub2 type,size;
      char state_key[5];
      OCIDefine        *pdef;
      OCIBind          *p_bnd;
      ub1          **c_buf;
      OCIStmt*     pOciStatement;      /* Statement handle */
      OCIStmt*     pOciStatCursor;     /* Statement handle */   
      OCIError*    pOciError;          /* Error handle */
      OCIEnv*      pOciEnviron;        /* Environment handle */
      OCIServer*   pOciServer;         /* Server handle */  
      OCISession*  pOciSession;        /* Session handle */
      OCISvcCtx*   pOciServiceContext; /* Service Context handle */
      OCIBind*     pOciBind[500];      /* Bind handle */
      OCIParam*    pOciParam;          /* Param handle */
      int OCI_Fetch(OCIStmt *p_select,OCIError *p_err, int *piOcc)
      int iOcc, rc; 
      rc=OCIStmtFetch(p_select,p_err,1,OCI_FETCH_NEXT,OCI_DEFAULT);
      printf("rc fetch %i",rc);
      if(rc==0&&piOcc!=NULL){
           printf("entro al if");
        iOcc=*piOcc;
        *piOcc=iOcc+1;
      return rc;
    int main()
    int pos,i=0,rc;
      retval = OCIEnvCreate(&pOciEnviron, OCI_DEFAULT, NULL, NULL, NULL, NULL,0,NULL);
      printf("EnvCreate retval=%d\n", retval);
      retval = OCIEnvInit(&pOciEnviron, OCI_DEFAULT, 0, NULL);
      printf("EnvInit retval=%d\n",retval);
      retval = OCIHandleAlloc(pOciEnviron, (void **)&pOciError, OCI_HTYPE_ERROR, 0, NULL);
      printf("HandleAlloc OCI_HTYPE_ERROR retval=%d\n",retval);
      retval = OCIHandleAlloc(pOciEnviron, (void **)&pOciServiceContext, OCI_HTYPE_SVCCTX, 0, NULL);
      printf("HandleAlloc OCI_HTYPE_SVCCTX retval=%d\n",retval);
      retval = OCIHandleAlloc(pOciEnviron, (void **)&pOciStatement, OCI_HTYPE_STMT, 0, NULL);
      printf("HandleAlloc OCI_HTYPE_STMT retval=%d\n",retval);
      retval = OCILogon(pOciEnviron,pOciError,&pOciServiceContext,(unsigned char *)pUsernameChar,
                  strlen(pUsernameChar), (unsigned char *)pPasswordChar, strlen(pPasswordChar),
                    (unsigned char *)pConnectChar,strlen(pConnectChar));
      printf("OCILogon retval=%d\n",retval);
      retval = OCIStmtPrepare(pOciStatement, pOciError, (unsigned char *)sqlCharArray1,strlen(sqlCharArray1),
                 OCI_NTV_SYNTAX, OCI_DEFAULT);
      printf("StmtPrepare retval=%d\n",retval);
      retval = OCIHandleAlloc(pOciEnviron, (void **)&pOciStatCursor, OCI_HTYPE_STMT, 0, NULL);
      printf("HandleAlloc OCI_HTYPE_STMT retval=%d\n",retval);
      retval = OCIBindByPos(pOciStatement,&pOciBind[0], pOciError, (ub4) 1, (void *)&state_key,
                 (sb4) sizeof(state_key), SQLT_STR, (void *) 0, (ub2 *) 0, (ub2 *)0,(ub4)0, (ub4 *)0, (ub4) OCI_DEFAULT);
      printf("BindByPos OCI_HTYPE_STMT retval=%d\n",retval);
      retval = OCIBindByPos(pOciStatement,&pOciBind[1], pOciError, (ub4) 2, (void *)&pOciStatCursor,
                 (sb4) 0, SQLT_RSET, (void *) 0, (ub2 *) 0, (ub2 *)0,(ub4)0, (ub4 *)0, (ub4) OCI_DEFAULT);
      printf("BindByPos OCI_HTYPE_STMT retval=%d\n",retval);
      strcpy(state_key,"CA");
      retval = OCIStmtExecute(pOciServiceContext, pOciStatement, pOciError, (ub4)1, (ub4) 0,
                   (OCISnapshot *)NULL, (OCISnapshot *)NULL, (ub4) OCI_DEFAULT);
      printf("StmtExecute retval=%d\n",retval);
      c_buf=(ub1 **)calloc(sizeof(ub1 *),3);
      c_indp=(sb2 *)calloc(sizeof(sb2 *),3);
      // Get number of parameters of the Cursor
      OCIAttrGet((void *) pOciStatCursor, (ub4)OCI_HTYPE_STMT, (void*) &parmcnt,(ub4 *) 0,
                  (ub4)OCI_ATTR_PARAM_COUNT, pOciError);
      printf("\nNumber of parameters of the cursor = %d\n",parmcnt);
      for (pos = 1; pos <= (int)parmcnt; pos++)
           OCIAttrGet((void *) pOciStatCursor, (ub4)OCI_HTYPE_STMT, (void*) &pos2,(ub4 *) 0,
                (ub4)OCI_ATTR_CURRENT_POSITION, pOciError);
           retval = OCIParamGet((void *)pOciStatCursor, (ub4)OCI_HTYPE_STMT, pOciError, (void **)&pOciParam,(ub4) pos );
           // Get the column name
           OCIAttrGet((void*) pOciParam, (ub4) OCI_DTYPE_PARAM,(void*) &name,(ub4 *) &len, (ub4) OCI_ATTR_NAME,(OCIError *)pOciError );
            // Get the column datatype
           OCIAttrGet((void*) pOciParam, (ub4) OCI_DTYPE_PARAM,(void*) &type,(ub4 *)0,(ub4)OCI_ATTR_DATA_TYPE,(OCIError *)pOciError);      
            // Get the column size
           OCIAttrGet((void*) pOciParam, (ub4) OCI_DTYPE_PARAM,(void*) &size,(ub4 *)0,(ub4)OCI_ATTR_DATA_SIZE,(OCIError *)pOciError);
           printf("Column %i\tNAME = %.*s \ttype %d \tsize %d\n",pos,len,name,type,size);
           // OCIDefine ByPos, one for each parameter
           // c_buf store the STATE_CODE, CITY_CODE and CITY_NAME columns from the cursor
           rc=OCIDefineByPos(pOciStatCursor,&pdef,(OCIError *)pOciError,pos,c_buf[pos-1],size+1,(ub2)type,(dvoid *)c_indp[pos-1],(ub2 *)0,(ub2 *)0,OCI_DEFAULT);     
          printf("OCIDefineByPos retval=%d\n,rc);
      // call OCIStmtFetch. In the next line, I receive the error
      rc=OCIStmtFetch(pOciStatCursor,pOciError,1,OCI_FETCH_NEXT,OCI_DEFAULT);
      printf("rc fetch %i",rc);
      return 0;
    {code}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

  • Cursor c1 parameter valve (PAR_SPRIDEN_PIDM) into the cursor c2

    hi,
    I am using 10g. I am new to oracle.
    My task is:
    I have to pass cursor c1 parameter valve (PAR_SPRIDEN_PIDM) into the cursor c2
    and get the output FULL_NAME which Concatenate the first_name and last_name
    Please find the code:
    ========================================
    CREATE TABLE spriden
    ( SPRIDEN_PIDM NUMBER(8
    ,SPRIDEN_ID VARCHAR2(9)
    ,SPRIDEN_LAST_NAME VARCHAR2(60)
    ,SPRIDEN_FIRST_NAME VARCHAR2(60 CHAR)
    ,SPRIDEN_CHANGE_IND VARCHAR2(1)
    ==================================================
    create or replace procedure multiple_cursors_proc is
    cursor c1 (PAR_SPRIDEN_PIDM in SPRIDEN.SPRIDEN_PIDM%type) is
    select SPRIDEN_ID
    from SPRIDEN
    where SPRIDEN_CHANGE_IND IS NULL
    and SPRIDEN_PIDM = PAR_SPRIDEN_PIDM;
    cursor c2 is select (SPRIDEN_FIRST_NAME || ' ' || SPRIDEN_LAST_NAME) FULL_NAME
    from SPRIDEN
    where SPRIDEN_CHANGE_IND IS NULL
    and SPRIDEN_PIDM = PAR_SPRIDEN_PIDM;
    BEGIN
    FOR cr1 in c1
    loop
    for cr2 in c2
    loop
    DBMS_OUTPUT.PUT_LINE('START TIME : ' ||
    to_char(sysdate, 'HH24:MI:SS'));
    dbms_output.put_line('SPRIDEN_PIDM: ' || PAR_SPRIDEN_PIDM || ' ' ||
    'FULL_NAME: ' || cr2.FULL_NAME);
    DBMS_OUTPUT.PUT_LINE('END TIME : ' ||
    to_char(sysdate, 'HH24:MI:SS'));
    end loop;
    end loop;
    end multiple_cursors_proc;
    =========================================================
    Thanks in advance
    Edited by: user10285804 on Apr 14, 2011 5:57 PM

    Hi,
    Your code has to change this way (untested):
    create or replace procedure multiple_cursors_proc is
    cursor c1 (PAR_SPRIDEN_PIDM in SPRIDEN.SPRIDEN_PIDM%type) is
    select SPRIDEN_ID
    from SPRIDEN
    where SPRIDEN_CHANGE_IND IS NULL
    and SPRIDEN_PIDM = PAR_SPRIDEN_PIDM;
    cursor c2(PAR_SPRIDEN_ID SPRIDEN.SPRIDEN_ID%type)
    is
      select (SPRIDEN_FIRST_NAME || ' ' || SPRIDEN_LAST_NAME) FULL_NAME
      from SPRIDEN
      where SPRIDEN_CHANGE_IND IS NULL
      and SPRIDEN_PIDM = PAR_SPRIDEN_ID;
    BEGIN
    FOR cr1 in c1
    loop
      for cr2 in c2(cr1.SPRIDEN_ID)
      loop
        DBMS_OUTPUT.PUT_LINE('START TIME : ' ||to_char(sysdate, 'HH24:MI:SS'));
        dbms_output.put_line('SPRIDEN_PIDM: ' || PAR_SPRIDEN_PIDM || ' ' ||'FULL_NAME: ' || cr2.FULL_NAME);
        DBMS_OUTPUT.PUT_LINE('END TIME : ' ||to_char(sysdate, 'HH24:MI:SS'));
      end loop;
    end loop;
    end multiple_cursors_proc;Herald ten Dam
    http://htendam.wordpress.com

  • Passing Ref Cursor as parameter to object type method

    I am encountering a problem passing a parameter of type REF CURSOR to methods of a set of object types I am developing.
    Here is an example of what I am trying to do:
    create or replace package p1 as
    type c_Cursor is ref cursor;
    end p1;
    create or replace type t_Object as object
    not instantiable method m1(p_Cursor in p1.c_Cursor) return varchar2
    ) not instantiable not final;
    create or replace type t_Subtype under t_Object as
    overriding method m1(p_Cursor in p1.c_Cursor)
    return varchar2
    The problem is that the PL/SQL compiler gives the error message PLS-00201 "p1.c_Cursor" not defined.
    According to my PL/SQL book (SF's Oracle PL/SQL Programming) the only way to use a ref cursor as a parameter to functions/procedures is to wrap them in a package. Indeed I have developed a test procedure in a different package that uses p1.c_Cursor as a parameter and it works fine.
    Oracle's documemtation suggests that object security (roles etc) can cause this error but as all the objects are being created in the same schema I don't see how this should be a problem.
    If anyone can suggest how to get around this problem I will be very grateful.
    BTW, if there are any mistakes in my sample code it's because I am writing it from memory as I don't have Internet access at work.
    Thanks,
    Charles.

    Thanks for your reply. I am still baffled as to why it doesn't work but, as you correctly point out, SYS_REFCURSOR works just fine. I figured that out earlier today and now the problem is solved.
    Charles.

  • Passing string to a cursor as parameter

    Hi,
    need some help
    Version:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
    DECLARE
         lv_dept VARCHAR2(100);
         Currec EMP%ROWTYPE;
         Cursor Cur_Dept(pv_dept VARCHAR2) IS SELECT * FROM EMP WHERE to_char(deptno) IN (pv_dept);
    BEGIN
       lv_dept:='''10'''||','||'''20''';
          OPEN Cur_Dept(lv_dept);
       LOOP
            FETCH Cur_Dept INTO Currec;
                     Message(Currec.Ename||Currec.deptno); --Forms code
          EXIT WHEN Cur_Dept%NOTFOUND;     
       END LOOP;
       close Cur_Dept;
    END;     
    If I pass the parameter as a string , it doesn't work.
    Regards,
    Lokanath

    As others have said, you should avoid using dynamic SQL.
    As SQL running in SQL*Plus, something like this...
    SQL> ed
    Wrote file afiedt.buf
      1  select *
      2  from emp
      3  where deptno in (
      4                  with t as (select '&dept_numbers' as txt from dual)
      5                  select REGEXP_SUBSTR (txt, '[^,]+', 1, level)
      6                  from t
      7                  connect by level <= length(regexp_replace(txt,'[^,]*'))+1
      8*                )
    SQL> /
    Enter value for dept_numbers: 10,20
    old   4:                 with t as (select '&dept_numbers' as txt from dual)
    new   4:                 with t as (select '10,20' as txt from dual)
         EMPNO ENAME      JOB              MGR HIREDATE                   SAL       COMM     DEPTNO
          7369 SMITH      CLERK           7902 17/12/1980 00:00:00        800                    20
          7566 JONES      MANAGER         7839 02/04/1981 00:00:00       2975                    20
          7782 CLARK      MANAGER         7839 09/06/1981 00:00:00       2450                    10
          7788 SCOTT      ANALYST         7566 19/04/1987 00:00:00       3000                    20
          7839 KING       PRESIDENT            17/11/1981 00:00:00       5000                    10
          7876 ADAMS      CLERK           7788 23/05/1987 00:00:00       1100                    20
          7902 FORD       ANALYST         7566 03/12/1981 00:00:00       3000                    20
          7934 MILLER     CLERK           7782 23/01/1982 00:00:00       1300                    10
    8 rows selected.Or in PL/SQL, based on the same SQL...
    SQL> ed
    Wrote file afiedt.buf
      1  declare
      2    cursor cur_emps(p_deptnos in varchar2) is
      3      select *
      4      from emp
      5      where deptno in (
      6                       select REGEXP_SUBSTR (p_deptnos, '[^,]+', 1, level)
      7                       from dual
      8                       connect by level <= length(regexp_replace(p_deptnos,'[^,]*'))+1
      9                      );
    10  begin
    11    for e in cur_emps('10,20')
    12    loop
    13      dbms_output.put_line(e.empno||' - '||e.ename||' : '||e.deptno);
    14    end loop;
    15* end;
    SQL> /
    7369 - SMITH : 20
    7566 - JONES : 20
    7782 - CLARK : 10
    7788 - SCOTT : 20
    7839 - KING : 10
    7876 - ADAMS : 20
    7902 - FORD : 20
    7934 - MILLER : 10
    PL/SQL procedure successfully completed.
    SQL>

  • Passing variable which has multiple values to cursor as parameter

    declare
    i varchar2(4000):='0';
    j varchar2(100):='0';
    cursor c1
    is
    (select * from gl_je_lines
    where period_name='Mar-10'
    and reference_10='WRITEOFF');
    cursor c2 (l_ref varchar2)
    is
    (select * from gl_je_lines
    where period_name='Mar-10'
    and reference_10='WRITEOFF'
    and reference_2 not in (l_ref));
    begin
    for cur_record in c1
    loop
    j:=cur_record.reference_2;
    end loop;
    i:= i||','''||j||'''';
    dbms_output.put_line(i);--here i has 254 values separated by ','
    for cash_rec in c2(i)
    loop
    dbms_output.put_line('this is loop 2');
    dbms_output.put_line(cash_rec.reference_2||','||cash_rec.reference_1);--Here this output is not displayed
    --i think the code in this cursor c2 is not executing
    --please tell me the solution
    end loop;
    end;
    I already use pl-sql table with array..it is not sufficietn to my requirement.because when i use it we must increment the index of that table ..so every time not in operator works in cursor2.so it shows wrong result
    From last three days i am working on this only please let me know as early as possible friends
    Edited by: 805567 on Oct 28, 2010 11:30 PM
    Edited by: 805567 on Oct 29, 2010 1:05 AM

    you said two cases
    in first case
    place my second cursor in first cursor
    if i place like that here i use not in operator
    so it prints for every value it will print not in of that value
    so it was wrong result
    i want not in all values
    in second case
    i took values from cursor not from table
    like as shown below
    declare
    credit_amount number:=0;
    debit_amount number:=0;
    v1 number:=0;
    v2 number:=0;
    v3 varchar2(500);
    v4 varchar2(500);
    v5 varchar2(240);
    v6 varchar2(240);
    v7 number;
    v8 varchar2(240);
    v9 varchar2(240);
    v10 number;
    v11 number;
    v12 varchar2(240);
    v13 varchar2(240);
    v14 varchar2(240);
    v15 number;
    v16 number;
    --This cursor is for liability records which are in GL not in AP
    cursor c1(p_header_id number,p_reference_2 varchar2,p_reference_4 varchar2)
    is
    (select
    jl.je_header_id "JE_HEADER_ID"
    ,jl.period_name "PERIOD"
    ,glcc.concatenated_segments "ACCOUNT_CODE"
    ,DECODE(jl.accounted_dr,null,0,jl.accounted_dr)"ACCOUNTED_DEBIT"
    ,DECODE(jl.accounted_cr,null,0,jl.accounted_cr) "ACCOUNTED_CREDIT"
    ,DECODE(jl.accounted_dr,null,0,jl.accounted_dr) - DECODE(jl.accounted_cr,null,0,jl.accounted_cr) "NET"
    ,glcc.CODE_COMBINATION_ID "CODE_COMBINATION_ID"
    ,jl.SET_OF_BOOKS_ID "SET_OF_BOOKS_ID"
    ,jl.PERIOD_NAME "PERIOD_NAME"
    ,DECODE(Jl.entered_dr,null,0,Jl.entered_dr)"ENTERED_DEBIT"
    ,DECODE(Jl.entered_cr,null,0,Jl.entered_cr) "ENTERED_CREDIT"
    ,jl.reference_1 "SUPPLIER"
    ,jl.reference_2 "INVOICE_ID"
    ,jl.reference_3 "CHECK_ID"
    ,jl.reference_4 "CHECK_NUMBER"
    ,jl.reference_5 "INVOICE_NUM"
    ,jl.reference_6 "'AP_PAYMT_JUST_INSERTED'"
    ,jl.reference_7 "set_of_books_id"
    ,jl.GL_SL_LINK_ID "GL_SL_LINK_ID"
    ,jl.REFERENCE_8 "INVOICE_DIST_LINE_NUMBER"
    ,jl.reference_9 "INVOICE_PAYMENT_ID"
    ,jl.REFERENCE_10 "LIABILITY"
    ,jl.TAX_CODE_ID "TAX_CODE_ID"
    ,jl.TAX_GROUP_ID "TAX_GROUP_ID"
    FROM
    gl_je_lines jl
    , apps.gl_code_combinations_KFV glcc
    , gl_je_headers jh
    WHERE
    jl.period_name='Mar-10'
    and glcc. code_combination_id in (1016,1296,1298)
    and jh.je_header_id = jl.je_header_id
    AND glcc.code_combination_id = jl.code_combination_id
    and jh.je_source = 'Payables'
    AND jl.je_header_id = p_header_id
    and jl.reference_2 = p_reference_2
    and jl.reference_4 = p_reference_4
    MINUS
    select
    ir.je_header_id
    , h.period_name "APPERIOD"
    ,g.CONCATENATED_SEGMENTS "AP ACCOUNT CODE"
    ,DECODE(l.accounted_dr,null,0,l.accounted_dr) "AP ACCOUNTED_DR"
    ,DECODE(l.accounted_cr,null,0,l.accounted_cr) "AP ACCOUNTED_CR"
    ,DECODE(l.accounted_dr,null,0,l.accounted_dr) - DECODE(l.accounted_cr,null,0,l.accounted_cr) "NET"
    ,l.CODE_COMBINATION_ID "AP_CCID"
    ,h.set_of_books_id
    ,h.PERIOD_NAME "PERIOD_NAME"
    ,DECODE(l.entered_dr,null,0,l.entered_dr)"ENTERED_DEBIT"
    ,DECODE(l.entered_cr,null,0,l.entered_cr) "ENTERED_CREDIT"
    ,l.reference1 "SUPPLIER"
    ,l.reference2 "INVOICE_Id"
    ,l.reference3 "reference_3"
    ,l.reference4 "reference_4"
    ,l.reference5 "INVOICE_NUM"
    ,l.reference6 "reference_6"
    ,l.reference7 "reference_7"
    ,l.GL_SL_LINK_ID "GL_SL_LINK_ID"
    ,l.REFERENCE8 "REFERENCE_8"
    ,l.reference9 "reference_9"
    ,l.REFERENCE10 "REFERENCE_10"
    ,l.TAX_CODE_ID "TAX_CODE_ID"
    ,l.TAX_LINK_ID "TAX_LINK_ID"
    from
    ap_ae_lines_all l,
    ap_ae_headers_all h,
    gl_code_combinations_kfv g
    ,gl_import_references ir
    where
    ir.gl_sl_link_id=l.gl_sl_link_id
    AND g.CODE_COMBINATION_ID = l.CODE_COMBINATION_ID
    and h.ae_header_id = l.ae_header_id
    AND h.period_name ='Mar-10'
    AND g.CODE_COMBINATION_ID in (1016,1296,1298)
    AND ir.JE_HEADER_ID = p_header_id
    and l.reference2 = p_reference_2
    and l.reference4 = p_reference_4);
    --This cursor is for writeoff records
    cursor c2
    is
    (select * from gl_je_lines
    where period_name='Mar-10'
    and reference_10='WRITEOFF'
    and reference_2 in ('525706','525600'));
    credit number:=0;
    debit number:=0;
    j varchar2(240);
    i varchar2(4000):='0';
    cursor c3 (p_invoice_id varchar2)
    is
    (select
    jl.je_header_id "JE_HEADER_ID"
    ,jl.period_name "PERIOD"
    ,glcc.concatenated_segments "ACCOUNT_CODE"
    ,DECODE(jl.accounted_dr,null,0,jl.accounted_dr)"ACCOUNTED_DEBIT"
    ,DECODE(jl.accounted_cr,null,0,jl.accounted_cr) "ACCOUNTED_CREDIT"
    ,DECODE(jl.accounted_dr,null,0,jl.accounted_dr) - DECODE(jl.accounted_cr,null,0,jl.accounted_cr) "NET"
    ,glcc.CODE_COMBINATION_ID "CODE_COMBINATION_ID"
    ,jl.SET_OF_BOOKS_ID "SET_OF_BOOKS_ID"
    ,jl.PERIOD_NAME "PERIOD_NAME"
    ,DECODE(Jl.entered_dr,null,0,Jl.entered_dr)"ENTERED_DEBIT"
    ,DECODE(Jl.entered_cr,null,0,Jl.entered_cr) "ENTERED_CREDIT"
    ,jl.reference_1 "SUPPLIER"
    ,jl.reference_2 "INVOICE_ID"
    ,jl.reference_3 "CHECK_ID"
    ,jl.reference_4 "CHECK_NUMBER"
    ,jl.reference_5 "INVOICE_NUM"
    ,jl.reference_6 "'AP_PAYMT_JUST_INSERTED'"
    ,jl.reference_7 "set_of_books_id"
    ,jl.GL_SL_LINK_ID "GL_SL_LINK_ID"
    ,jl.REFERENCE_8 "INVOICE_DIST_LINE_NUMBER"
    ,jl.reference_9 "INVOICE_PAYMENT_ID"
    ,jl.REFERENCE_10 "LIABILITY"
    ,jl.TAX_CODE_ID "TAX_CODE_ID"
    ,jl.TAX_GROUP_ID "TAX_GROUP_ID"
    FROM
    gl_je_lines jl
    , apps.gl_code_combinations_KFV glcc
    , gl_je_headers jh
    WHERE
    jl.period_name='Mar-10'
    and glcc. code_combination_id in (1016,1296,1298)
    and jh.je_header_id = jl.je_header_id
    AND glcc.code_combination_id = jl.code_combination_id
    and jh.je_source = 'Payables'
    and jl.reference_2 in (p_invoice_id)
    MINUS
    select
    ir.je_header_id
    , h.period_name "AP PERIOD"
    ,g.CONCATENATED_SEGMENTS "AP ACCOUNT CODE"
    ,DECODE(l.accounted_dr,null,0,l.accounted_dr) "AP ACCOUNTED_DR"
    ,DECODE(l.accounted_cr,null,0,l.accounted_cr) "AP ACCOUNTED_CR"
    ,DECODE(l.accounted_dr,null,0,l.accounted_dr) - DECODE(l.accounted_cr,null,0,l.accounted_cr) "NET"
    ,l.CODE_COMBINATION_ID "AP_CCID"
    ,h.set_of_books_id
    ,h.PERIOD_NAME "PERIOD_NAME"
    ,DECODE(l.entered_dr,null,0,l.entered_dr)"ENTERED_DEBIT"
    ,DECODE(l.entered_cr,null,0,l.entered_cr) "ENTERED_CREDIT"
    ,l.reference1 "SUPPLIER"
    ,l.reference2 "INVOICE_Id"
    ,l.reference3 "reference_3"
    ,l.reference4 "reference_4"
    ,l.reference5 "INVOICE_NUM"
    ,l.reference6 "reference_6"
    ,l.reference7 "reference_7"
    ,l.GL_SL_LINK_ID "GL_SL_LINK_ID"
    ,l.REFERENCE8 "REFERENCE_8"
    ,l.reference9 "reference_9"
    ,l.REFERENCE10 "REFERENCE_10"
    ,l.TAX_CODE_ID "TAX_CODE_ID"
    ,l.TAX_LINK_ID "TAX_LINK_ID"
    from
    ap_ae_lines_all l,
    ap_ae_headers_all h,
    gl_code_combinations_kfv g
    ,gl_import_references ir
    where
    ir.gl_sl_link_id=l.gl_sl_link_id
    AND g.CODE_COMBINATION_ID = l.CODE_COMBINATION_ID
    and h.ae_header_id = l.ae_header_id
    AND h.period_name ='Mar-10'
    AND g.CODE_COMBINATION_ID in (1016,1296,1298)
    and l.reference2 in (p_invoice_id)); --here if i put l.reference2  in (p_invoice_id)) it must show the details of
    -- of all.but it doesnot display sir
    --here if i put l.reference2 not in (p_invoice_id)) it shows that id also sir
    BEGIN
    for writeoff_rec in c2
    LOOP
    FOR Main_cur in c1(writeoff_rec.je_header_id,writeoff_rec.reference_2,writeoff_rec.reference_4)
    LOOP
    j:='0';
    IF writeoff_rec.accounted_dr is not null AND Main_cur.ACCOUNTED_CREDIT<>0
    THEN
    v10:=Main_cur.ACCOUNTED_CREDIT;
    credit_amount:= credit_amount+Main_cur.ACCOUNTED_CREDIT;
    ELSIF writeoff_rec.accounted_cr is not null AND Main_cur.ACCOUNTED_DEBIT<>0
    THEN
    v11:=Main_cur.ACCOUNTED_DEBIT;
    debit_amount:= debit_amount+Main_cur.ACCOUNTED_DEBIT;
    END IF;
    if c1%found then
    j:=Main_cur.INVOICE_ID;
    end if;
    END LOOP;
    -- i:=i||','||j;
    i:= i||','''||j||'''';
    END LOOP;
    dbms_output.put_line(i); --Here i got all invoiceids of varchar2 records without single qutations
    --its look like '0','23232','2324234' etc.
    for cash_clearing_cur in c3(i)--here is the problem i am sending i with 250 values separated by ',' is it correct
    loop
    v3:=0;
    v4:=0;
    v5:=0;
    v6:=0;
    v7:=0;
    v8:=0;
    v9:=0;
    v10:=0;
    v11:=0;
    v12:=0;
    v13:=0;
    v14:=0;
    v15:=0;
    v16:=0;
    credit:=credit+cash_clearing_cur.ACCOUNTED_CREDIT;
    debit:=debit+cash_clearing_cur.ACCOUNTED_DEBIT;
    v3:=cash_clearing_cur.JE_HEADER_ID;
    v4:=cash_clearing_cur.INVOICE_ID;
    v5:=cash_clearing_cur.CHECK_NUMBER;
    v6:=cash_clearing_cur.LIABILITY;
    v7:=cash_clearing_cur.CODE_COMBINATION_ID;
    v8:=cash_clearing_cur.PERIOD;
    v9:=cash_clearing_cur.ACCOUNT_CODE;
    v10:=cash_clearing_cur.ACCOUNTED_CREDIT;
    v11:=cash_clearing_cur.ACCOUNTED_DEBIT;
    v12:=cash_clearing_cur.SUPPLIER;
    v13:=cash_clearing_cur.CHECK_ID;
    v14:=cash_clearing_cur.INVOICE_NUM;
    v15:=cash_clearing_cur.GL_SL_LINK_ID;
    v16:=cash_clearing_cur.SET_OF_BOOKS_ID;
    DBMS_OUTPUT.PUT_LINE('HEAd '||v3||','||'inv_id '||v4||','||
    'chk_num '||v5||','||'ref10 '||v6||','||'CCID '||V7||','||'PED '||V8
    ||','||'acctcode '||v9||','||'acct_Ct '||V10
    ||','||'acct_Dt '||v11||','||'chk_id '||v13||','||'inv_num '||V14
    ||','||'link '||v15||','||'sob '||v16||','||'suplir '||V12);
    end loop;
    DBMS_OUTPUT.PUT_LINE( 'Dr Amt ' ||debit || 'Cr amt ' || credit );
    EXCEPTION
    when too_many_rows then
    dbms_output.put_line('Invalid no of rows');
    when no_data_found then
    dbms_output.put_line('no data found exception');
    when others then
    dbms_output.put_line('Other than Invalid no of rows');
    dbms_output.put_line(SQLERRM);
    END;
    /

  • Cursor-pasing multiple values as a cursor parameter

    declare
    credit_amount number:=0;
    debit_amount number:=0;
    v1 number:=0;
    v2 number:=0;
    v3 varchar2(500);
    v4 varchar2(500);
    v5 varchar2(240);
    v6 varchar2(240);
    v7 number;
    v8 varchar2(240);
    v9 varchar2(240);
    v10 number;
    v11 number;
    v12 varchar2(240);
    v13 varchar2(240);
    v14 varchar2(240);
    v15 number;
    v16 number;
    --This cursor is for liability records which are in GL not in AP
    cursor c1(p_header_id number,p_reference_2 varchar2,p_reference_4 varchar2)
    is
    (select
    jl.je_header_id "JE_HEADER_ID"
    ,jl.period_name "PERIOD"
    ,glcc.concatenated_segments "ACCOUNT_CODE"
    ,DECODE(jl.accounted_dr,null,0,jl.accounted_dr)"ACCOUNTED_DEBIT"
    ,DECODE(jl.accounted_cr,null,0,jl.accounted_cr) "ACCOUNTED_CREDIT"
    ,DECODE(jl.accounted_dr,null,0,jl.accounted_dr) - DECODE(jl.accounted_cr,null,0,jl.accounted_cr) "NET"
    ,glcc.CODE_COMBINATION_ID "CODE_COMBINATION_ID"
    ,jl.SET_OF_BOOKS_ID "SET_OF_BOOKS_ID"
    ,jl.PERIOD_NAME "PERIOD_NAME"
    ,DECODE(Jl.entered_dr,null,0,Jl.entered_dr)"ENTERED_DEBIT"
    ,DECODE(Jl.entered_cr,null,0,Jl.entered_cr) "ENTERED_CREDIT"
    ,jl.reference_1 "SUPPLIER"
    ,jl.reference_2 "INVOICE_ID"
    ,jl.reference_3 "CHECK_ID"
    ,jl.reference_4 "CHECK_NUMBER"
    ,jl.reference_5 "INVOICE_NUM"
    ,jl.reference_6 "'AP_PAYMT_JUST_INSERTED'"
    ,jl.reference_7 "set_of_books_id"
    ,jl.GL_SL_LINK_ID "GL_SL_LINK_ID"
    ,jl.REFERENCE_8 "INVOICE_DIST_LINE_NUMBER"
    ,jl.reference_9 "INVOICE_PAYMENT_ID"
    ,jl.REFERENCE_10 "LIABILITY"
    ,jl.TAX_CODE_ID "TAX_CODE_ID"
    ,jl.TAX_GROUP_ID "TAX_GROUP_ID"
    FROM
    gl_je_lines jl
    , apps.gl_code_combinations_KFV glcc
    , gl_je_headers jh
    WHERE
    jl.period_name='Mar-10'
    and glcc. code_combination_id in (1016,1296,1298)
    and jh.je_header_id = jl.je_header_id
    AND glcc.code_combination_id = jl.code_combination_id
    and jh.je_source = 'Payables'
    AND jl.je_header_id = p_header_id
    and jl.reference_2 = p_reference_2
    and jl.reference_4 = p_reference_4
    MINUS
    select
    ir.je_header_id
    , h.period_name "APPERIOD"
    ,g.CONCATENATED_SEGMENTS "AP ACCOUNT CODE"
    ,DECODE(l.accounted_dr,null,0,l.accounted_dr) "AP ACCOUNTED_DR"
    ,DECODE(l.accounted_cr,null,0,l.accounted_cr) "AP ACCOUNTED_CR"
    ,DECODE(l.accounted_dr,null,0,l.accounted_dr) - DECODE(l.accounted_cr,null,0,l.accounted_cr) "NET"
    ,l.CODE_COMBINATION_ID "AP_CCID"
    ,h.set_of_books_id
    ,h.PERIOD_NAME "PERIOD_NAME"
    ,DECODE(l.entered_dr,null,0,l.entered_dr)"ENTERED_DEBIT"
    ,DECODE(l.entered_cr,null,0,l.entered_cr) "ENTERED_CREDIT"
    ,l.reference1 "SUPPLIER"
    ,l.reference2 "INVOICE_Id"
    ,l.reference3 "reference_3"
    ,l.reference4 "reference_4"
    ,l.reference5 "INVOICE_NUM"
    ,l.reference6 "reference_6"
    ,l.reference7 "reference_7"
    ,l.GL_SL_LINK_ID "GL_SL_LINK_ID"
    ,l.REFERENCE8 "REFERENCE_8"
    ,l.reference9 "reference_9"
    ,l.REFERENCE10 "REFERENCE_10"
    ,l.TAX_CODE_ID "TAX_CODE_ID"
    ,l.TAX_LINK_ID "TAX_LINK_ID"
    from
    ap_ae_lines_all l,
    ap_ae_headers_all h,
    gl_code_combinations_kfv g
    ,gl_import_references ir
    where
    ir.gl_sl_link_id=l.gl_sl_link_id
    AND g.CODE_COMBINATION_ID = l.CODE_COMBINATION_ID
    and h.ae_header_id = l.ae_header_id
    AND h.period_name ='Mar-10'
    AND g.CODE_COMBINATION_ID in (1016,1296,1298)
    AND ir.JE_HEADER_ID = p_header_id
    and l.reference2 = p_reference_2
    and l.reference4 = p_reference_4);
    --This cursor is for writeoff records
    cursor c2
    is
    (select * from gl_je_lines
    where period_name='Mar-10'
    and reference_10='WRITEOFF'
    and reference_2 in ('525706','525600'));
    credit number:=0;
    debit number:=0;
    j varchar2(240);
    i varchar2(4000):='0';
    cursor c3 (p_invoice_id varchar2)
    is
    (select
    jl.je_header_id "JE_HEADER_ID"
    ,jl.period_name "PERIOD"
    ,glcc.concatenated_segments "ACCOUNT_CODE"
    ,DECODE(jl.accounted_dr,null,0,jl.accounted_dr)"ACCOUNTED_DEBIT"
    ,DECODE(jl.accounted_cr,null,0,jl.accounted_cr) "ACCOUNTED_CREDIT"
    ,DECODE(jl.accounted_dr,null,0,jl.accounted_dr) - DECODE(jl.accounted_cr,null,0,jl.accounted_cr) "NET"
    ,glcc.CODE_COMBINATION_ID "CODE_COMBINATION_ID"
    ,jl.SET_OF_BOOKS_ID "SET_OF_BOOKS_ID"
    ,jl.PERIOD_NAME "PERIOD_NAME"
    ,DECODE(Jl.entered_dr,null,0,Jl.entered_dr)"ENTERED_DEBIT"
    ,DECODE(Jl.entered_cr,null,0,Jl.entered_cr) "ENTERED_CREDIT"
    ,jl.reference_1 "SUPPLIER"
    ,jl.reference_2 "INVOICE_ID"
    ,jl.reference_3 "CHECK_ID"
    ,jl.reference_4 "CHECK_NUMBER"
    ,jl.reference_5 "INVOICE_NUM"
    ,jl.reference_6 "'AP_PAYMT_JUST_INSERTED'"
    ,jl.reference_7 "set_of_books_id"
    ,jl.GL_SL_LINK_ID "GL_SL_LINK_ID"
    ,jl.REFERENCE_8 "INVOICE_DIST_LINE_NUMBER"
    ,jl.reference_9 "INVOICE_PAYMENT_ID"
    ,jl.REFERENCE_10 "LIABILITY"
    ,jl.TAX_CODE_ID "TAX_CODE_ID"
    ,jl.TAX_GROUP_ID "TAX_GROUP_ID"
    FROM
    gl_je_lines jl
    , apps.gl_code_combinations_KFV glcc
    , gl_je_headers jh
    WHERE
    jl.period_name='Mar-10'
    and glcc. code_combination_id in (1016,1296,1298)
    and jh.je_header_id = jl.je_header_id
    AND glcc.code_combination_id = jl.code_combination_id
    and jh.je_source = 'Payables'
    and jl.reference_2 in (p_invoice_id)
    MINUS
    select
    ir.je_header_id
    , h.period_name "AP PERIOD"
    ,g.CONCATENATED_SEGMENTS "AP ACCOUNT CODE"
    ,DECODE(l.accounted_dr,null,0,l.accounted_dr) "AP ACCOUNTED_DR"
    ,DECODE(l.accounted_cr,null,0,l.accounted_cr) "AP ACCOUNTED_CR"
    ,DECODE(l.accounted_dr,null,0,l.accounted_dr) - DECODE(l.accounted_cr,null,0,l.accounted_cr) "NET"
    ,l.CODE_COMBINATION_ID "AP_CCID"
    ,h.set_of_books_id
    ,h.PERIOD_NAME "PERIOD_NAME"
    ,DECODE(l.entered_dr,null,0,l.entered_dr)"ENTERED_DEBIT"
    ,DECODE(l.entered_cr,null,0,l.entered_cr) "ENTERED_CREDIT"
    ,l.reference1 "SUPPLIER"
    ,l.reference2 "INVOICE_Id"
    ,l.reference3 "reference_3"
    ,l.reference4 "reference_4"
    ,l.reference5 "INVOICE_NUM"
    ,l.reference6 "reference_6"
    ,l.reference7 "reference_7"
    ,l.GL_SL_LINK_ID "GL_SL_LINK_ID"
    ,l.REFERENCE8 "REFERENCE_8"
    ,l.reference9 "reference_9"
    ,l.REFERENCE10 "REFERENCE_10"
    ,l.TAX_CODE_ID "TAX_CODE_ID"
    ,l.TAX_LINK_ID "TAX_LINK_ID"
    from
    ap_ae_lines_all l,
    ap_ae_headers_all h,
    gl_code_combinations_kfv g
    ,gl_import_references ir
    where
    ir.gl_sl_link_id=l.gl_sl_link_id
    AND g.CODE_COMBINATION_ID = l.CODE_COMBINATION_ID
    and h.ae_header_id = l.ae_header_id
    AND h.period_name ='Mar-10'
    AND g.CODE_COMBINATION_ID in (1016,1296,1298)
    and l.reference2 in (p_invoice_id)); --here if i put l.reference2  in (p_invoice_id)) it must show the details of
    -- of all.but it doesnot display sir
    --here if i put l.reference2 not in (p_invoice_id)) it shows that id also sir
    BEGIN
    for writeoff_rec in c2
    LOOP
    FOR Main_cur in c1(writeoff_rec.je_header_id,writeoff_rec.reference_2,writeoff_rec.reference_4)
    LOOP
    j:='0';
    IF writeoff_rec.accounted_dr is not null AND Main_cur.ACCOUNTED_CREDIT<>0
    THEN
    v10:=Main_cur.ACCOUNTED_CREDIT;
    credit_amount:= credit_amount+Main_cur.ACCOUNTED_CREDIT;
    ELSIF writeoff_rec.accounted_cr is not null AND Main_cur.ACCOUNTED_DEBIT<>0
    THEN
    v11:=Main_cur.ACCOUNTED_DEBIT;
    debit_amount:= debit_amount+Main_cur.ACCOUNTED_DEBIT;
    END IF;
    if c1%found then
    j:=Main_cur.INVOICE_ID;
    end if;
    END LOOP;
    -- i:=i||','||j;
    i:= i||','''||j||'''';
    END LOOP;
    dbms_output.put_line(i); --Here i got all invoiceids of varchar2 records without single qutations
    --its look like '0','23232','2324234' etc.
    for cash_clearing_cur in c3(i)--Here is the problem ..is it correct way here i am passing parameter to cursor
    loop
    v3:=0;
    v4:=0;
    v5:=0;
    v6:=0;
    v7:=0;
    v8:=0;
    v9:=0;
    v10:=0;
    v11:=0;
    v12:=0;
    v13:=0;
    v14:=0;
    v15:=0;
    v16:=0;
    credit:=credit+cash_clearing_cur.ACCOUNTED_CREDIT;
    debit:=debit+cash_clearing_cur.ACCOUNTED_DEBIT;
    v3:=cash_clearing_cur.JE_HEADER_ID;
    v4:=cash_clearing_cur.INVOICE_ID;
    v5:=cash_clearing_cur.CHECK_NUMBER;
    v6:=cash_clearing_cur.LIABILITY;
    v7:=cash_clearing_cur.CODE_COMBINATION_ID;
    v8:=cash_clearing_cur.PERIOD;
    v9:=cash_clearing_cur.ACCOUNT_CODE;
    v10:=cash_clearing_cur.ACCOUNTED_CREDIT;
    v11:=cash_clearing_cur.ACCOUNTED_DEBIT;
    v12:=cash_clearing_cur.SUPPLIER;
    v13:=cash_clearing_cur.CHECK_ID;
    v14:=cash_clearing_cur.INVOICE_NUM;
    v15:=cash_clearing_cur.GL_SL_LINK_ID;
    v16:=cash_clearing_cur.SET_OF_BOOKS_ID;
    DBMS_OUTPUT.PUT_LINE('HEAd '||v3||','||'inv_id '||v4||','||
    'chk_num '||v5||','||'ref10 '||v6||','||'CCID '||V7||','||'PED '||V8
    ||','||'acctcode '||v9||','||'acct_Ct '||V10
    ||','||'acct_Dt '||v11||','||'chk_id '||v13||','||'inv_num '||V14
    ||','||'link '||v15||','||'sob '||v16||','||'suplir '||V12);
    end loop;
    DBMS_OUTPUT.PUT_LINE( 'Dr Amt ' ||debit || 'Cr amt ' || credit );
    EXCEPTION
    when too_many_rows then
    dbms_output.put_line('Invalid no of rows');
    when no_data_found then
    dbms_output.put_line('no data found exception');
    when others then
    dbms_output.put_line('Other than Invalid no of rows');
    dbms_output.put_line(SQLERRM);
    END;
    ouutput was
    0,0 that means cursor c3 is not compiled because i am passing multiple values in parametr .is there any solution

    Whats wrong with your previous thread passing variable which has multiple values to cursor as parameter
    Opening a new thread doesn't mean that you will get more responses. Did you carefully studied the hints given by Justin Cave ? I guess no, because you ignored the first point itself to format your code with tag.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

  • Passing where cluase as parameter for cursor

    I want to pass where clause of cursor as parameter.... how can I do that?
    say I want cursor as,
    cursor c1 is select fname, mname from person where :param;
    where :param is a value I want to pass in declare section

    I want to pass where clause of cursor as parameter.... how can I do that?Yes.
    cursor c1 is select fname, mname from person where :param;
    where :param is a value I want to pass in declare sectionYou can also shoot yourself in the foot using a 357 Magnum.
    Neither is recommended - unless you are a professional idiot. Which I doubt as these are typically your Darwin Award Winners.
    Why is it bad to to have "+WHERE :param+"?
    Bind variables. If the WHERE clause is passed as a dynamic string. this will usually be implemented in the following fashion:
    SQL> create or replace procedure smellyFoo( filterClause varchar2, refCur in out sys_refcursor ) is
      2  begin
      3          open refCur for
      4          'select owner, object_id, object_name from all_objects where owner != ''SYS'' and '||filterClause||' order by 1,2';
      5  end;
      6  /
    Procedure created.
    SQL>
    SQL> var c refcursor
    SQL> exec smellyFoo( 'object_type=''TABLE'' and rownum <11', :c );
    PL/SQL procedure successfully completed.
    SQL>
    SQL> print c
    OWNER       OBJECT_ID OBJECT_NAME
    OUTLN             452 OL$
    OUTLN             453 OL$HINTS
    OUTLN             456 OL$NODES
    SYSTEM           3621 MVIEW$_ADV_WORKLOAD
    SYSTEM           3624 MVIEW$_ADV_BASETABLE
    SYSTEM           3626 MVIEW$_ADV_SQLDEPEND
    SYSTEM           3628 MVIEW$_ADV_PRETTY
    SYSTEM           3630 MVIEW$_ADV_TEMP
    SYSTEM           3632 MVIEW$_ADV_FILTER
    SYSTEM           3634 MVIEW$_ADV_LOG
    10 rows selected.
    SQL>What's wrong with this? The filter clause contains literals. Not bind variables. Which means that non-sharable SQL will be created. This means more cursors (for same SQLs with different literal values) in the shared pool. Different sizes SQLs that leads to fragmentation of the shared pool memory. More hard parsing. Bigger delay in parsing as there are more cursors to scan in the shared pool (useless exercise) as there are no existing cursors that are sharable and can be re-used.
    So what would the correct way be? The client passing a filter clause as a proper bind variable string, and also passing (separately) the values for those bind variables. But this is not easy to code, especially when dealing with filter clauses that may contain no bind variables. or a 100 bind variables.
    Also, the call interface the client needs to use will become a lot more complex as the client now not only needs to build a proper string containing bind variables, it also need to make sure it pass the values for those variables in the correct order.
    So why? Why do any of this? What is the requirement that lead you to this "solution" where the client can dynamically decide on what the filter criteria is?
    Surely, there must be a reason to this madness of the client wanting to throw any filter clause at a SQL cursor... and surely, that is what needs to be identified and analysed and resolved - instead of wanting to create hacks like the above. Causing performance issues. Not to mention opening a security hole that is ideal for SQL injection.

  • Maximum Open Cursors Exceeded problem in XSQL

    Hi,
    We are processing an XSQL page by calling XSQLRequest.process() programatically within our application. Within the XSQL page there are several queries which involve multiple nested CURSOR expressions... when the query returns enough rows we are running into the error "ORA-00604: error occurred at recursive SQL level 1 ORA-01000: maximum open cursors exceeded".
    When searching this forum I have seen many (old) postings regarding this error and a bug in the XDK... seems like it was some time ago, but while we set about improving the structure of our XSQL page (or increasing the max open cursor init parameter currently at 500 or both) can anyone confirm that this bug no longer exists?
    Also, any general suggestions on working around this limit rather than increasing it? We have considered splitting up our queries into smaller queries (and merging the results via XSLT) and closing cursors during the session explicitly by issuing commits within the XSQL page... but any better ideas?
    Thanks,
    Bob

    I have found this max open cursors problem to be related to Statement object not being closed. This presents a problem for the use of PreparedStatements, because they are only useful if you can keep them open and resuse them. However, in doing so, each iteration through the PreparedStatement creates another open cursor in the databse rather than reusing the previous one. A work around I discovered by reading about REF CURSORS and I use in JDBC is as follows:
    Assuming a previously prepared PreparedStatement pstmt and a ResultSet rset-
    while (rset.next()) {
    rset.close();
    // This line closes the cursor in the database
    // but does not require you to re-prepare the
    // PreparedStatement. Don't ask me why--ask the
    // Oracle API guys.
    rset.getStatement().close();
    // make ready for GC
    rset = null;

  • How to put a collection into a Ref Cursor?

    Hi,
    I am trying to create a procedure (inside a package) which fills a collection and I need to fill a ref cursor (out parameter) with this collection. I can fill the collection but I how can I fill the ref cursor? I am receiving the message "PL/SQL: ORA-00902: invalid datatype" (Highlighted below as comments)
    I have a limitation: I am not allowed to create any kind of objects at the database schema level, so I have to create them inside the package. I'm writting it with SQL Tools 1.4, I'm also not allowed to do this in SQL+.
    This is the code of the package. The cursors' selects were simplified just because they are not the problem, but their structure is like follows below.
    CREATE OR REPLACE PACKAGE U3.PKG_TESTE AS
    TYPE REC_TYPE IS RECORD(
    COL1 VARCHAR2(50) ,
    COL2 VARCHAR2(100) ,
    COL3 VARCHAR2(20) ,
    COL4 VARCHAR2(30) ,
    COL5 VARCHAR2(100) ,
    COL6 VARCHAR2(50) ,
    COL7 NUMBER(3) ,
    COL8 VARCHAR2(30) ,
    COL9 VARCHAR2(16) ,
    COL10 VARCHAR2(50) ,
    COL11 NUMBER(4) ,
    COL12 VARCHAR2(40)
    TYPE REC_TYPE_LIST IS TABLE OF REC_TYPE
    INDEX BY BINARY_INTEGER;
    TYPE C_RESULTSET IS REF CURSOR;
    VAR_TAB_TESTE     REC_TYPE_LIST;
    PROCEDURE     Z_REC_INSTANCE
    pUSER_SYS_CODE VARCHAR2,
    pSYS_SEG_CODE VARCHAR2,
    pComplFiltro VARCHAR2,
    pCodInter NUMBER,
    cResultset out C_RESULTSET
    END PKG_TESTE ;
    CREATE OR REPLACE PACKAGE BODY U3.PKG_TESTE
    AS
    PROCEDURE Z_REC_INSTANCE
    pUSER_SYS_CODE varchar2,
    pSYS_SEG_CODE varchar2,
    pComplFiltro varchar2,
    pCodInter number
    AS
    cursor cur1 is
    select 'A' COL1, 'B' COL2, 'C' COL3, 'D' COL4, 'E' COL5,
    'F' COL6, 'G' COL7, 'H' COL8
    FROM DUAL;
    regCur1 cur1%rowtype;
    cursor cur2 is
    SELECT 'I' C1, 'J' C2, 'K' C3, 'L' C4
    FROM DUAL;
    regCur2 cur2%rowtype;
    varSQL varchar2(4000);
    varCOL10s varchar2(100);
    varFiltroAtrib varchar2(100);
    varCount number(10);
    BEGIN
    varCount := 1;
    open cur1;
    Loop
    fetch cur1 into regCur1;
    exit when cur1%notfound;
    open cur2;
    Loop
    fetch cur2 into regCur2;
    exit when cur2%notfound;
    VAR_TAB_TESTE(varCount).COL1 := regCur1.COL1;
    VAR_TAB_TESTE(varCount).COL2 := regCur1.COL2;
    VAR_TAB_TESTE(varCount).COL3 := regCur1.COL3;
    VAR_TAB_TESTE(varCount).COL4 := regCur1.COL4;
    VAR_TAB_TESTE(varCount).COL5 := regCur1.COL5;
    VAR_TAB_TESTE(varCount).COL6 := regCur1.COL6;
    VAR_TAB_TESTE(varCount).COL7 := regCur1.COL7;
    VAR_TAB_TESTE(varCount).COL8 := regCur1.COL8;
    VAR_TAB_TESTE(varCount).COL9 := regCur2.C1;
    VAR_TAB_TESTE(varCount).COL10 := regCur2.C2;
    VAR_TAB_TESTE(varCount).COL11 := regCur2.C3;
    VAR_TAB_TESTE(varCount).COL12 := regCur2.C4;
    varCount := varCount + 1;
    end Loop;
    end Loop;
    -- I'd like to do something like this:
    -- c_resultset := select * from var_tab_teste;
    -- but i don't know how to put the records of the type on the ref cursor,
    -- probably because I don't know how to select them
    -- pl/sql: ora-00902: invalid datatype
    for varCount in (select COL1 from table( CAST ( VAR_TAB_TESTE AS REC_TYPE_LIST ) ))
    loop
    dbms_output.put('WORKS');
    end loop;
    END Z_REC_INSTANCE;
    END PKG_TESTE;
    SHOW     ERR     PACKAGE          PKG_TESTE;
    SHOW     ERR     PACKAGE BODY     PKG_TESTE;
    SHOW     ERR     PROCEDURE     PKG_TESTE.Z_REC_INSTANCE;
    I'm using:
    Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.1.0 - Production
    Thanks in advance.

    I don't have the exact version but in 9iOK I lied, I found a 9i instance ;-)
    Oracle9i Enterprise Edition Release 9.2.0.7.0 - 64bit Production
    JServer Release 9.2.0.7.0 - Production
    SQL> CREATE TABLE table_name (column_name VARCHAR2 (30));
    Table created.
    SQL> INSERT INTO table_name VALUES ('value one');
    1 row created.
    SQL> INSERT INTO table_name VALUES ('value two');
    1 row created.
    SQL> COMMIT;
    Commit complete.
    SQL> CREATE OR REPLACE PACKAGE package_name
      2  AS
      3     TYPE collection_type_name IS TABLE OF table_name%ROWTYPE;
      4
      5     FUNCTION function_name
      6        RETURN collection_type_name PIPELINED;
      7  END package_name;
      8  /
    Package created.
    SQL> CREATE OR REPLACE PACKAGE BODY package_name
      2  AS
      3     FUNCTION function_name
      4        RETURN collection_type_name PIPELINED
      5     IS
      6     BEGIN
      7        FOR record_name IN (SELECT column_name
      8                            FROM   table_name) LOOP
      9           PIPE ROW (record_name);
    10        END LOOP;
    11
    12        RETURN;
    13     END function_name;
    14  END package_name;
    15  /
    Package body created.
    SQL> VARIABLE variable_name REFCURSOR;
    SQL> BEGIN
      2     OPEN :variable_name FOR
      3        SELECT column_name
      4        FROM   TABLE (package_name.function_name);
      5  END;
      6  /
    PL/SQL procedure successfully completed.
    SQL> PRINT variable_name;
    COLUMN_NAME
    value one
    value two
    SQL>I recommend though that you test this thoroughly. There were bugs with this approach when it was newly introduced that prevented you from dropping the package.

  • Using REF CURSOR from JDBC?

    How do I use a REF CURSOR OUT parameter present in a Stored Procedure from my JDBC program?

    here is an example, calling a packaged function. 1st param is delared as IN OUT REF CURSOR.
    CallableStatement cs = conn.prepareCall("{? = call myPackage.myFunc(?,?)}");
    cs.registerOutParameter (1, OracleTypes.INTEGER);
    cs.registerOutParameter (2, OracleTypes.CURSOR);
    cs.setInt(3,mInt.intValue());
    boolean boolValue = cs.execute();
    ResultSet cursor = ((OracleCallableStatement)cs).getCursor (2);
    i hope this helps.
    null

  • Stored procedure call with REF CURSOR from JDBC

    How can I call a SP with a REF CURSOR OUT parameter from JDBC?

    This is a breeze.
    CallableStatement oraCall = oraConn.prepareCall("BEGIN PKG_SOMETHING.RETURNS_A_SP(?);END;");
    oraCall.registerOutParameter(1,oracle.jdbc.driver.OracleTypes.CURSOR);
    oraCall.execute();
    ResultSet rsServList = (ResultSet) oraCall.getObject(1);
    ... use ResultSet ...
    rsServList.close();
    oraCall.close();
    slag

  • Ref Cursor - How to append records into ref cursor?

    Hi,
    Is it possible to append ref cursor?
    Iam having a procedure which accepts 1 string as input
    parameter. That string will have list of ID delimited by comma.
    I want to extract & match every ID with some tables.
    My problem is for first ID i would get 10 records
    and for 2nd ID i 'l get other 20 records. But while returning
    i need to send the same(10 + 20 records) as ref cursor(OUT parameter).
    But in below given code i could send only last 20 records. first
    10 records are not append/updated into ref cursor.
    How to append 2nd 20 records with 1st 10 records? so that i can
    send all the 30 records.
    Here goes my code...
    CREATE OR REPLACE PROCEDURE getCRMGroupsAndRollups_PRC
    in_groupId IN VARCHAR2,
    out_getCRMGroups OUT TYPES.DATASET
    IS
    v_temp VARCHAR2(500) := in_groupId ||',';
    v_temp_split VARCHAR2(500);
    v_pos1 NUMBER := 0;
    v_pos2 NUMBER := 1;
    v_pos3 NUMBER := 0;
    v_extract_char VARCHAR(1) := NULL;
    v_comma_cnt NUMBER := 0;
    BEGIN
    -- check in for null input parameters
    IF ( in_groupId IS NOT NULL ) THEN
    -- loop to count no of in_groupId
    FOR j IN 1..LENGTH(v_temp)
    LOOP
         v_extract_char := SUBSTR(v_temp,j,1);
         IF (v_extract_char = ',') THEN
              v_comma_cnt := v_comma_cnt + 1;
         END IF;     
    END LOOP;
    -- loop to extract in_group Id
    FOR i IN 1..v_comma_cnt
    LOOP
         v_pos1 := instr(v_temp,',',(v_pos1 + 1));
         v_pos3 := ((v_pos1-1) - v_pos2 )+ 1;
         v_temp_split := SUBSTR(v_temp,v_pos2,v_pos3);
         v_pos2 := v_pos1 + 1;
    -- query to return dataset filled BY list of all the current
    -- CRM groups and the associated rollup groups
    OPEN out_getCRMGroups FOR
    SELECT
    DISTINCT
    gcs.crm_st_id_cd,
    gcs.lgcy_roll_up_grp_num,
    gcs.lgcy_roll_up_grp_name,
    gcs.grp_xwalk_complt_dt,
    gcs.crm_grp_num,
    gcs.facets_gnat_id,
    gcs.crm_grp_name
    FROM
    grp_convsn_stat gcs
    --lgcy_xref_elem lxe
    WHERE
    ( gcs.mbrshp_convsn_aprvl_dt = NULL )
    OR ( gcs.mbrshp_convsn_aprvl_dt < (SYSDATE - 7 ) )
    AND ( gcs.facets_grp_stat_actv_ind = 'Y' )
    AND ( gcs.lgcy_roll_up_grp_num = v_temp_split );
    END LOOP;
    END IF;
    EXCEPTION
    WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('INTERNAL ERROR');
    END getCRMGroupsAndRollups_PRC;
    in this v_temp_split will have extracted id & iam opening
    ref cursor for each & every ID extracted from list.
    2) How to handle no_data_found exception for this ref cursor?
    Please help me....
    -thiyagarajan.

    http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:110612348061
    http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:210612357425
    Message was edited by:
    Kamal Kishore

  • Determining number of cursors needed !!!

    Hi all,
    We are developing a web-based app with lot of pl/sql procedures & functions (more than 150).
    But we have to suggest the number of cursors to be set in the INIT.ORA to the client.
    My question is "How to determine the number of cursors needed for my application to run smoothly for 100 users?".
    Appreciate your views.
    Thanks.

    The open cursors initialization parameter controls the number of cursors that can be open per session, so the number of simultaneous users is irrelevent. If you're watching the number of open cursors your sessions have open, you can set parameters based on the high-water mark you've seen in testing.
    Justin
    Distributed Database Consulting, Inc.
    www.ddbcinc.com/askDDBC

  • P_trace & p_debug as a report parameter

    I want to pass enable debug & trace for the report . I need to pass the parameter p_trace and p_debug for enabling trace & debug . I just want to know how I handle this parameter & enable trace & debug

    Whats wrong with your previous thread passing variable which has multiple values to cursor as parameter
    Opening a new thread doesn't mean that you will get more responses. Did you carefully studied the hints given by Justin Cave ? I guess no, because you ignored the first point itself to format your code with tag.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

Maybe you are looking for

  • Cannot successfully download latest OSX software update

    I am trying to downloard the latest OSX software update on a slower connection takes about 1 hour.  So far three attempts have been unsuccessful.

  • Migrate Prefs and Settings from CC to CC 2014

    I installed CC 2014; After Effects, InDesign, Illustrator, Photoshop and some other Apps.  During the installation process I did not tell the installer to migrate (missed that one) all my old Preferences and settings.  How can I do this after the fac

  • Convert data from b-tree database to oracle database

    hi i need to convert signture file from b-tree database to oracle 8i database and i know nothing about b-tree database. thanks

  • Create checkums / md5's in flex / air app

    can you create md5 checksums using flex / air ??? have been searching but nothing found yet!! in php you can use a  nice function md5_file && md5 to generate md5's - can this be done in an air / flex app???? regards Oliver

  • Is Skygo compatible with Yosemite?

    I'm not anymore able to use Skygo with Yosemite, with Maverick it worked. Sky told me that my operating system does not allowed the minimum qualification. Why?