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?
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
add a comment |
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
add a comment |
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
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
oracle function plsql pipelined-function
edited Mar 8 at 14:36
Kaushik Nayak
21.1k41332
21.1k41332
asked Mar 8 at 14:00
AbsternAbstern
133
133
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
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
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 thatcur
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
add a comment |
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
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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
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 thatcur
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
add a comment |
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
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 thatcur
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
add a comment |
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
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
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 thatcur
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
add a comment |
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 thatcur
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
add a comment |
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.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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