PL/SQL: dynamic query in clob string. How can i open a cursor?











up vote
1
down vote

favorite
1












I am using Oracle 10g and I have problems with Open for Query_string.



that query string is a dynamic query, it has more than 7000 charcaters.



how can I open a cursor with varchar2 (which in 10g only accepts max length of 4000)? At the moment I tried using CLOB instead of but open..for doesnt accept it.



In the header is declared: TYPE tref IS REF CURSOR;



DECLARE
SQL CLOB;
BEGIN
SQL := '...';

OPEN tref FOR SQL
END


the version 10g not accepted is:



DECLARE
SQL VARCHAR2(8000);
BEGIN
SQL := '...';

OPEN tref FOR SQL
END


Thx










share|improve this question
























  • Even in Oracle 10, a PL/SQL variable can hold up to 32767 bytes: Quote from the manual "The VARCHAR2 datatype takes a required parameter that specifies a maximum size up to 32767 bytes"
    – a_horse_with_no_name
    Nov 23 at 8:37












  • anyway calling from .net to the store procedure says me the error of max length. obviouslly using 12g is no problem.
    – David
    Nov 23 at 10:45















up vote
1
down vote

favorite
1












I am using Oracle 10g and I have problems with Open for Query_string.



that query string is a dynamic query, it has more than 7000 charcaters.



how can I open a cursor with varchar2 (which in 10g only accepts max length of 4000)? At the moment I tried using CLOB instead of but open..for doesnt accept it.



In the header is declared: TYPE tref IS REF CURSOR;



DECLARE
SQL CLOB;
BEGIN
SQL := '...';

OPEN tref FOR SQL
END


the version 10g not accepted is:



DECLARE
SQL VARCHAR2(8000);
BEGIN
SQL := '...';

OPEN tref FOR SQL
END


Thx










share|improve this question
























  • Even in Oracle 10, a PL/SQL variable can hold up to 32767 bytes: Quote from the manual "The VARCHAR2 datatype takes a required parameter that specifies a maximum size up to 32767 bytes"
    – a_horse_with_no_name
    Nov 23 at 8:37












  • anyway calling from .net to the store procedure says me the error of max length. obviouslly using 12g is no problem.
    – David
    Nov 23 at 10:45













up vote
1
down vote

favorite
1









up vote
1
down vote

favorite
1






1





I am using Oracle 10g and I have problems with Open for Query_string.



that query string is a dynamic query, it has more than 7000 charcaters.



how can I open a cursor with varchar2 (which in 10g only accepts max length of 4000)? At the moment I tried using CLOB instead of but open..for doesnt accept it.



In the header is declared: TYPE tref IS REF CURSOR;



DECLARE
SQL CLOB;
BEGIN
SQL := '...';

OPEN tref FOR SQL
END


the version 10g not accepted is:



DECLARE
SQL VARCHAR2(8000);
BEGIN
SQL := '...';

OPEN tref FOR SQL
END


Thx










share|improve this question















I am using Oracle 10g and I have problems with Open for Query_string.



that query string is a dynamic query, it has more than 7000 charcaters.



how can I open a cursor with varchar2 (which in 10g only accepts max length of 4000)? At the moment I tried using CLOB instead of but open..for doesnt accept it.



In the header is declared: TYPE tref IS REF CURSOR;



DECLARE
SQL CLOB;
BEGIN
SQL := '...';

OPEN tref FOR SQL
END


the version 10g not accepted is:



DECLARE
SQL VARCHAR2(8000);
BEGIN
SQL := '...';

OPEN tref FOR SQL
END


Thx







plsql cursor oracle10g






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 23 at 8:35









a_horse_with_no_name

289k46438533




289k46438533










asked Nov 22 at 16:07









David

2,03551733




2,03551733












  • Even in Oracle 10, a PL/SQL variable can hold up to 32767 bytes: Quote from the manual "The VARCHAR2 datatype takes a required parameter that specifies a maximum size up to 32767 bytes"
    – a_horse_with_no_name
    Nov 23 at 8:37












  • anyway calling from .net to the store procedure says me the error of max length. obviouslly using 12g is no problem.
    – David
    Nov 23 at 10:45


















  • Even in Oracle 10, a PL/SQL variable can hold up to 32767 bytes: Quote from the manual "The VARCHAR2 datatype takes a required parameter that specifies a maximum size up to 32767 bytes"
    – a_horse_with_no_name
    Nov 23 at 8:37












  • anyway calling from .net to the store procedure says me the error of max length. obviouslly using 12g is no problem.
    – David
    Nov 23 at 10:45
















Even in Oracle 10, a PL/SQL variable can hold up to 32767 bytes: Quote from the manual "The VARCHAR2 datatype takes a required parameter that specifies a maximum size up to 32767 bytes"
– a_horse_with_no_name
Nov 23 at 8:37






Even in Oracle 10, a PL/SQL variable can hold up to 32767 bytes: Quote from the manual "The VARCHAR2 datatype takes a required parameter that specifies a maximum size up to 32767 bytes"
– a_horse_with_no_name
Nov 23 at 8:37














anyway calling from .net to the store procedure says me the error of max length. obviouslly using 12g is no problem.
– David
Nov 23 at 10:45




anyway calling from .net to the store procedure says me the error of max length. obviouslly using 12g is no problem.
– David
Nov 23 at 10:45












1 Answer
1






active

oldest

votes

















up vote
1
down vote



accepted










Ok guys



I got the solution, when you have CLOB, you can use dbms_lob.substr...



OPEN p_ref FOR dbms_lob.substr( SQL, 32000, 1 );





share|improve this answer























  • it is working very well this option for Oracle 10g and Oracle 12g
    – David
    Dec 1 at 14:25











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',
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%2f53434721%2fpl-sql-dynamic-query-in-clob-string-how-can-i-open-a-cursor%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








up vote
1
down vote



accepted










Ok guys



I got the solution, when you have CLOB, you can use dbms_lob.substr...



OPEN p_ref FOR dbms_lob.substr( SQL, 32000, 1 );





share|improve this answer























  • it is working very well this option for Oracle 10g and Oracle 12g
    – David
    Dec 1 at 14:25















up vote
1
down vote



accepted










Ok guys



I got the solution, when you have CLOB, you can use dbms_lob.substr...



OPEN p_ref FOR dbms_lob.substr( SQL, 32000, 1 );





share|improve this answer























  • it is working very well this option for Oracle 10g and Oracle 12g
    – David
    Dec 1 at 14:25













up vote
1
down vote



accepted







up vote
1
down vote



accepted






Ok guys



I got the solution, when you have CLOB, you can use dbms_lob.substr...



OPEN p_ref FOR dbms_lob.substr( SQL, 32000, 1 );





share|improve this answer














Ok guys



I got the solution, when you have CLOB, you can use dbms_lob.substr...



OPEN p_ref FOR dbms_lob.substr( SQL, 32000, 1 );






share|improve this answer














share|improve this answer



share|improve this answer








edited Dec 1 at 12:53

























answered Nov 23 at 14:29









David

2,03551733




2,03551733












  • it is working very well this option for Oracle 10g and Oracle 12g
    – David
    Dec 1 at 14:25


















  • it is working very well this option for Oracle 10g and Oracle 12g
    – David
    Dec 1 at 14:25
















it is working very well this option for Oracle 10g and Oracle 12g
– David
Dec 1 at 14:25




it is working very well this option for Oracle 10g and Oracle 12g
– David
Dec 1 at 14:25


















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.





Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


Please pay close attention to the following guidance:


  • 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%2f53434721%2fpl-sql-dynamic-query-in-clob-string-how-can-i-open-a-cursor%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

What visual should I use to simply compare current year value vs last year in Power BI desktop

How to ignore python UserWarning in pytest?

Alexandru Averescu