PLSQL pipelined function to return a list The Next CEO of Stack OverflowWhat's the difference between a method and a function?Get list of all tables in Oracle?var functionName = function() vs function functionName() Set a default parameter value for a JavaScript functionWhat does the exclamation mark do before the function?Function that would return the data retrieved from a select query - OracleSetting default value in Oracle Object Type Constructor FunctionPL / SQL Function to return varchar2 / numbersOracle Pipelined functionAny benefit to including the “return” keyword in a pipelined function?

What is the result of assigning to std::vector<T>::begin()?

What does convergence in distribution "in the Gromov–Hausdorff" sense mean?

Indicator light circuit

How to count occurrences of text in a file?

How to start emacs in "nothing" mode (`fundamental-mode`)

How to avoid supervisors with prejudiced views?

What is the purpose of the Evocation wizard's Potent Cantrip feature?

What does "Its cash flow is deeply negative" mean?

Why do remote companies require working in the US?

Why didn't Khan get resurrected in the Genesis Explosion?

Why do airplanes bank sharply to the right after air-to-air refueling?

Why am I allowed to create multiple unique pointers from a single object?

Complex fractions

Is it professional to write unrelated content in an almost-empty email?

Received an invoice from my ex-employer billing me for training; how to handle?

What happens if you roll doubles 3 times then land on "Go to jail?"

Are there any limitations on attacking while grappling?

sp_blitzCache results Memory grants

Example of a Mathematician/Physicist whose Other Publications during their PhD eclipsed their PhD Thesis

Is "for causing autism in X" grammatical?

Is it my responsibility to learn a new technology in my own time my employer wants to implement?

Novel about a guy who is possessed by the divine essence and the world ends?

Can you replace a racial trait cantrip when leveling up?

Is there a way to save my career from absolute disaster?



PLSQL pipelined function to return a list



The Next CEO of Stack OverflowWhat's the difference between a method and a function?Get list of all tables in Oracle?var functionName = function() vs function functionName() Set a default parameter value for a JavaScript functionWhat does the exclamation mark do before the function?Function that would return the data retrieved from a select query - OracleSetting default value in Oracle Object Type Constructor FunctionPL / SQL Function to return varchar2 / numbersOracle Pipelined functionAny benefit to including the “return” keyword in a pipelined function?










2















I'm trying to create a function to get a list of values from my database. After some researches I found that I need to use the PIPELINE function and I found some examples. I did my function but I somehow got 2 errors that I don't understand.



Here's my code :



CREATE OR REPLACE TYPE LISTE_VALUES AS TABLE OF VARCHAR2(2000);
/

CREATE OR REPLACE FUNCTION F_GET_VAL(
PI_1 IN VARCHAR2,
PI_2 IN NUMBER,
PI_3 IN VARCHAR2)
RETURN LISTE_VALUES PIPELINED

IS
W_ROW_COUNT NUMBER := 0;

BEGIN

FOR CUR IN (SELECT VALUE FROM TABLE
WHERE ...
...

)

LOOP
PIPE ROW (CUR);
W_ROUNT_COUNT := W_ROW_COUNT + 1;
END LOOP;

DBMS_OUTPUT.PUT_LINE('There were '
|| W_ROW_COUNT
|| ' rows selected' );

END F_GET_VAL;
/


And These are the errors I get :




[Error] PLS-00382 : PLS-00382: expression is of wrong type (at the
line : PIPE ROW (CUR);)



[Error] PLS-00201 : PLS-00201: identifier 'W_ROUNT_COUNT' must be
declared



(at the line : W_ROUNT_COUNT := W_ROW_COUNT + 1;)




For the first error I triple checked and VALUE in my table has a type VARCHAR2(2000), exactly as I declared my type at the beginning (a table of VARCHAR2(2000)).



And for the second, I don't understand because I declared the variable W_ROW_COUNT in my IS statement.



If someone could help me it would be nice !
Thanks










share|improve this question




























    2















    I'm trying to create a function to get a list of values from my database. After some researches I found that I need to use the PIPELINE function and I found some examples. I did my function but I somehow got 2 errors that I don't understand.



    Here's my code :



    CREATE OR REPLACE TYPE LISTE_VALUES AS TABLE OF VARCHAR2(2000);
    /

    CREATE OR REPLACE FUNCTION F_GET_VAL(
    PI_1 IN VARCHAR2,
    PI_2 IN NUMBER,
    PI_3 IN VARCHAR2)
    RETURN LISTE_VALUES PIPELINED

    IS
    W_ROW_COUNT NUMBER := 0;

    BEGIN

    FOR CUR IN (SELECT VALUE FROM TABLE
    WHERE ...
    ...

    )

    LOOP
    PIPE ROW (CUR);
    W_ROUNT_COUNT := W_ROW_COUNT + 1;
    END LOOP;

    DBMS_OUTPUT.PUT_LINE('There were '
    || W_ROW_COUNT
    || ' rows selected' );

    END F_GET_VAL;
    /


    And These are the errors I get :




    [Error] PLS-00382 : PLS-00382: expression is of wrong type (at the
    line : PIPE ROW (CUR);)



    [Error] PLS-00201 : PLS-00201: identifier 'W_ROUNT_COUNT' must be
    declared



    (at the line : W_ROUNT_COUNT := W_ROW_COUNT + 1;)




    For the first error I triple checked and VALUE in my table has a type VARCHAR2(2000), exactly as I declared my type at the beginning (a table of VARCHAR2(2000)).



    And for the second, I don't understand because I declared the variable W_ROW_COUNT in my IS statement.



    If someone could help me it would be nice !
    Thanks










    share|improve this question


























      2












      2








      2








      I'm trying to create a function to get a list of values from my database. After some researches I found that I need to use the PIPELINE function and I found some examples. I did my function but I somehow got 2 errors that I don't understand.



      Here's my code :



      CREATE OR REPLACE TYPE LISTE_VALUES AS TABLE OF VARCHAR2(2000);
      /

      CREATE OR REPLACE FUNCTION F_GET_VAL(
      PI_1 IN VARCHAR2,
      PI_2 IN NUMBER,
      PI_3 IN VARCHAR2)
      RETURN LISTE_VALUES PIPELINED

      IS
      W_ROW_COUNT NUMBER := 0;

      BEGIN

      FOR CUR IN (SELECT VALUE FROM TABLE
      WHERE ...
      ...

      )

      LOOP
      PIPE ROW (CUR);
      W_ROUNT_COUNT := W_ROW_COUNT + 1;
      END LOOP;

      DBMS_OUTPUT.PUT_LINE('There were '
      || W_ROW_COUNT
      || ' rows selected' );

      END F_GET_VAL;
      /


      And These are the errors I get :




      [Error] PLS-00382 : PLS-00382: expression is of wrong type (at the
      line : PIPE ROW (CUR);)



      [Error] PLS-00201 : PLS-00201: identifier 'W_ROUNT_COUNT' must be
      declared



      (at the line : W_ROUNT_COUNT := W_ROW_COUNT + 1;)




      For the first error I triple checked and VALUE in my table has a type VARCHAR2(2000), exactly as I declared my type at the beginning (a table of VARCHAR2(2000)).



      And for the second, I don't understand because I declared the variable W_ROW_COUNT in my IS statement.



      If someone could help me it would be nice !
      Thanks










      share|improve this question
















      I'm trying to create a function to get a list of values from my database. After some researches I found that I need to use the PIPELINE function and I found some examples. I did my function but I somehow got 2 errors that I don't understand.



      Here's my code :



      CREATE OR REPLACE TYPE LISTE_VALUES AS TABLE OF VARCHAR2(2000);
      /

      CREATE OR REPLACE FUNCTION F_GET_VAL(
      PI_1 IN VARCHAR2,
      PI_2 IN NUMBER,
      PI_3 IN VARCHAR2)
      RETURN LISTE_VALUES PIPELINED

      IS
      W_ROW_COUNT NUMBER := 0;

      BEGIN

      FOR CUR IN (SELECT VALUE FROM TABLE
      WHERE ...
      ...

      )

      LOOP
      PIPE ROW (CUR);
      W_ROUNT_COUNT := W_ROW_COUNT + 1;
      END LOOP;

      DBMS_OUTPUT.PUT_LINE('There were '
      || W_ROW_COUNT
      || ' rows selected' );

      END F_GET_VAL;
      /


      And These are the errors I get :




      [Error] PLS-00382 : PLS-00382: expression is of wrong type (at the
      line : PIPE ROW (CUR);)



      [Error] PLS-00201 : PLS-00201: identifier 'W_ROUNT_COUNT' must be
      declared



      (at the line : W_ROUNT_COUNT := W_ROW_COUNT + 1;)




      For the first error I triple checked and VALUE in my table has a type VARCHAR2(2000), exactly as I declared my type at the beginning (a table of VARCHAR2(2000)).



      And for the second, I don't understand because I declared the variable W_ROW_COUNT in my IS statement.



      If someone could help me it would be nice !
      Thanks







      oracle function plsql pipelined-function






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Mar 8 at 14:36









      Kaushik Nayak

      21.1k41332




      21.1k41332










      asked Mar 8 at 14:00









      AbsternAbstern

      133




      133






















          1 Answer
          1






          active

          oldest

          votes


















          5














          A PIPE ROW can be created for a single row and not the cursor's name variable, which contains the entire recordset.



          Just use



          PIPE ROW ( cur.value );



          instead of PIPE ROW ( cur );



          You may also store the query output into a collection and then pipe each element.



          Regarding the error due to W_ROW_COUNT, it is a typo. You have wrongly used it as W_ROUNT_COUNT while adding it.



          Demo






          share|improve this answer

























          • Thank you very much for your clear answer, it now totally works :) My bad for the second error ... didn't see that !

            – Abstern
            Mar 8 at 14:46











          • Note that cur here is a record variable, not a cursor.

            – Jeffrey Kemp
            Mar 14 at 3:14











          • @JeffreyKemp : Thanks, I hope now I have worded it appropriately.

            – Kaushik Nayak
            Mar 14 at 5:03











          Your Answer






          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "1"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55064782%2fplsql-pipelined-function-to-return-a-list%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          5














          A PIPE ROW can be created for a single row and not the cursor's name variable, which contains the entire recordset.



          Just use



          PIPE ROW ( cur.value );



          instead of PIPE ROW ( cur );



          You may also store the query output into a collection and then pipe each element.



          Regarding the error due to W_ROW_COUNT, it is a typo. You have wrongly used it as W_ROUNT_COUNT while adding it.



          Demo






          share|improve this answer

























          • Thank you very much for your clear answer, it now totally works :) My bad for the second error ... didn't see that !

            – Abstern
            Mar 8 at 14:46











          • Note that cur here is a record variable, not a cursor.

            – Jeffrey Kemp
            Mar 14 at 3:14











          • @JeffreyKemp : Thanks, I hope now I have worded it appropriately.

            – Kaushik Nayak
            Mar 14 at 5:03















          5














          A PIPE ROW can be created for a single row and not the cursor's name variable, which contains the entire recordset.



          Just use



          PIPE ROW ( cur.value );



          instead of PIPE ROW ( cur );



          You may also store the query output into a collection and then pipe each element.



          Regarding the error due to W_ROW_COUNT, it is a typo. You have wrongly used it as W_ROUNT_COUNT while adding it.



          Demo






          share|improve this answer

























          • Thank you very much for your clear answer, it now totally works :) My bad for the second error ... didn't see that !

            – Abstern
            Mar 8 at 14:46











          • Note that cur here is a record variable, not a cursor.

            – Jeffrey Kemp
            Mar 14 at 3:14











          • @JeffreyKemp : Thanks, I hope now I have worded it appropriately.

            – Kaushik Nayak
            Mar 14 at 5:03













          5












          5








          5







          A PIPE ROW can be created for a single row and not the cursor's name variable, which contains the entire recordset.



          Just use



          PIPE ROW ( cur.value );



          instead of PIPE ROW ( cur );



          You may also store the query output into a collection and then pipe each element.



          Regarding the error due to W_ROW_COUNT, it is a typo. You have wrongly used it as W_ROUNT_COUNT while adding it.



          Demo






          share|improve this answer















          A PIPE ROW can be created for a single row and not the cursor's name variable, which contains the entire recordset.



          Just use



          PIPE ROW ( cur.value );



          instead of PIPE ROW ( cur );



          You may also store the query output into a collection and then pipe each element.



          Regarding the error due to W_ROW_COUNT, it is a typo. You have wrongly used it as W_ROUNT_COUNT while adding it.



          Demo







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Mar 14 at 5:02

























          answered Mar 8 at 14:32









          Kaushik NayakKaushik Nayak

          21.1k41332




          21.1k41332












          • Thank you very much for your clear answer, it now totally works :) My bad for the second error ... didn't see that !

            – Abstern
            Mar 8 at 14:46











          • Note that cur here is a record variable, not a cursor.

            – Jeffrey Kemp
            Mar 14 at 3:14











          • @JeffreyKemp : Thanks, I hope now I have worded it appropriately.

            – Kaushik Nayak
            Mar 14 at 5:03

















          • Thank you very much for your clear answer, it now totally works :) My bad for the second error ... didn't see that !

            – Abstern
            Mar 8 at 14:46











          • Note that cur here is a record variable, not a cursor.

            – Jeffrey Kemp
            Mar 14 at 3:14











          • @JeffreyKemp : Thanks, I hope now I have worded it appropriately.

            – Kaushik Nayak
            Mar 14 at 5:03
















          Thank you very much for your clear answer, it now totally works :) My bad for the second error ... didn't see that !

          – Abstern
          Mar 8 at 14:46





          Thank you very much for your clear answer, it now totally works :) My bad for the second error ... didn't see that !

          – Abstern
          Mar 8 at 14:46













          Note that cur here is a record variable, not a cursor.

          – Jeffrey Kemp
          Mar 14 at 3:14





          Note that cur here is a record variable, not a cursor.

          – Jeffrey Kemp
          Mar 14 at 3:14













          @JeffreyKemp : Thanks, I hope now I have worded it appropriately.

          – Kaushik Nayak
          Mar 14 at 5:03





          @JeffreyKemp : Thanks, I hope now I have worded it appropriately.

          – Kaushik Nayak
          Mar 14 at 5:03



















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55064782%2fplsql-pipelined-function-to-return-a-list%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Can't initialize raids on a new ASUS Prime B360M-A motherboard2019 Community Moderator ElectionSimilar to RAID config yet more like mirroring solution?Can't get motherboard serial numberWhy does the BIOS entry point start with a WBINVD instruction?UEFI performance Asus Maximus V Extreme

          Identity Server 4 is not redirecting to Angular app after login2019 Community Moderator ElectionIdentity Server 4 and dockerIdentityserver implicit flow unauthorized_clientIdentityServer Hybrid Flow - Access Token is null after user successful loginIdentity Server to MVC client : Page Redirect After loginLogin with Steam OpenId(oidc-client-js)Identity Server 4+.NET Core 2.0 + IdentityIdentityServer4 post-login redirect not working in Edge browserCall to IdentityServer4 generates System.NullReferenceException: Object reference not set to an instance of an objectIdentityServer4 without HTTPS not workingHow to get Authorization code from identity server without login form

          2005 Ahvaz unrest Contents Background Causes Casualties Aftermath See also References Navigation menue"At Least 10 Are Killed by Bombs in Iran""Iran"Archived"Arab-Iranians in Iran to make April 15 'Day of Fury'"State of Mind, State of Order: Reactions to Ethnic Unrest in the Islamic Republic of Iran.10.1111/j.1754-9469.2008.00028.x"Iran hangs Arab separatists"Iran Overview from ArchivedConstitution of the Islamic Republic of Iran"Tehran puzzled by forged 'riots' letter""Iran and its minorities: Down in the second class""Iran: Handling Of Ahvaz Unrest Could End With Televised Confessions""Bombings Rock Iran Ahead of Election""Five die in Iran ethnic clashes""Iran: Need for restraint as anniversary of unrest in Khuzestan approaches"Archived"Iranian Sunni protesters killed in clashes with security forces"Archived