Cannot call function which is defined in a PL/SQL package
I have this PL/SQL package:
create or replace package palindrome as
function check_palindrome(num int) return int;
end palindrome;
create or replace package body palindrome as
function check_palindrome(num int) return int as
ans int;
z int;
r int;
rev int;
begin
z := num;
while z > 0 loop
r := mod(z,10);
rev := rev*10+r;
z := floor(z/10);
end loop;
if rev=num then
dbms_output.put_line('the no '||num ||' is a palindrome ');
else
dbms_output.put_line('the no '||num ||' is not a palindrome ');
end if;
end check_palindrome;
end palindrome;
I created the above package which has one function check_palindrome()
, but when I try to call the function using
begin
palindrome.check_palindrome(343);
end;
I get this error
Error report -
ORA-06550: line 2, column 5:
PLS-00221: 'CHECK_PALINDROME' is not a procedure or is undefined
ORA-06550: line 2, column 5:
PL/SQL: Statement ignored
Why am I getting this error? The package body is compiled successfully but I am getting this error while calling the function.
oracle plsql oracle11g
add a comment |
I have this PL/SQL package:
create or replace package palindrome as
function check_palindrome(num int) return int;
end palindrome;
create or replace package body palindrome as
function check_palindrome(num int) return int as
ans int;
z int;
r int;
rev int;
begin
z := num;
while z > 0 loop
r := mod(z,10);
rev := rev*10+r;
z := floor(z/10);
end loop;
if rev=num then
dbms_output.put_line('the no '||num ||' is a palindrome ');
else
dbms_output.put_line('the no '||num ||' is not a palindrome ');
end if;
end check_palindrome;
end palindrome;
I created the above package which has one function check_palindrome()
, but when I try to call the function using
begin
palindrome.check_palindrome(343);
end;
I get this error
Error report -
ORA-06550: line 2, column 5:
PLS-00221: 'CHECK_PALINDROME' is not a procedure or is undefined
ORA-06550: line 2, column 5:
PL/SQL: Statement ignored
Why am I getting this error? The package body is compiled successfully but I am getting this error while calling the function.
oracle plsql oracle11g
add a comment |
I have this PL/SQL package:
create or replace package palindrome as
function check_palindrome(num int) return int;
end palindrome;
create or replace package body palindrome as
function check_palindrome(num int) return int as
ans int;
z int;
r int;
rev int;
begin
z := num;
while z > 0 loop
r := mod(z,10);
rev := rev*10+r;
z := floor(z/10);
end loop;
if rev=num then
dbms_output.put_line('the no '||num ||' is a palindrome ');
else
dbms_output.put_line('the no '||num ||' is not a palindrome ');
end if;
end check_palindrome;
end palindrome;
I created the above package which has one function check_palindrome()
, but when I try to call the function using
begin
palindrome.check_palindrome(343);
end;
I get this error
Error report -
ORA-06550: line 2, column 5:
PLS-00221: 'CHECK_PALINDROME' is not a procedure or is undefined
ORA-06550: line 2, column 5:
PL/SQL: Statement ignored
Why am I getting this error? The package body is compiled successfully but I am getting this error while calling the function.
oracle plsql oracle11g
I have this PL/SQL package:
create or replace package palindrome as
function check_palindrome(num int) return int;
end palindrome;
create or replace package body palindrome as
function check_palindrome(num int) return int as
ans int;
z int;
r int;
rev int;
begin
z := num;
while z > 0 loop
r := mod(z,10);
rev := rev*10+r;
z := floor(z/10);
end loop;
if rev=num then
dbms_output.put_line('the no '||num ||' is a palindrome ');
else
dbms_output.put_line('the no '||num ||' is not a palindrome ');
end if;
end check_palindrome;
end palindrome;
I created the above package which has one function check_palindrome()
, but when I try to call the function using
begin
palindrome.check_palindrome(343);
end;
I get this error
Error report -
ORA-06550: line 2, column 5:
PLS-00221: 'CHECK_PALINDROME' is not a procedure or is undefined
ORA-06550: line 2, column 5:
PL/SQL: Statement ignored
Why am I getting this error? The package body is compiled successfully but I am getting this error while calling the function.
oracle plsql oracle11g
oracle plsql oracle11g
edited Nov 17 '18 at 13:00
William Robertson
8,28932233
8,28932233
asked Nov 17 '18 at 11:10
AdarshAdarsh
172
172
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
You've declared a FUNCTION, which RETURNS a value, but you've called it like you would a PROCEDURE, so you need:
DECLARE
the_val INT;
BEGIN
the_val := PALINDROME.check_palindrome(343);
END;
/
add a comment |
Your program doesn't actually return anything and there seems no value in correcting that as you're just displaying the outcome to the screen. Instead you should turn it into a procedure:
create or replace package palindrome as
procedure check_palindrome(num int) ;
end palindrome;
create or replace package body palindrome as
procedure check_palindrome(num int) as
ans int;
z int;
r int;
rev int;
begin
z := num;
while z > 0 loop
r := mod(z,10);
rev := rev*10+r;
z := floor(z/10);
end loop;
if rev=num then
dbms_output.put_line('the no '||num ||' is a palindrome ');
else
dbms_output.put_line('the no '||num ||' is not a palindrome ');
end if;
end check_palindrome;
end palindrome;
Then you can call it successfully:
begin
palindrome.check_palindrome(343);
end;
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%2f53350633%2fcannot-call-function-which-is-defined-in-a-pl-sql-package%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
You've declared a FUNCTION, which RETURNS a value, but you've called it like you would a PROCEDURE, so you need:
DECLARE
the_val INT;
BEGIN
the_val := PALINDROME.check_palindrome(343);
END;
/
add a comment |
You've declared a FUNCTION, which RETURNS a value, but you've called it like you would a PROCEDURE, so you need:
DECLARE
the_val INT;
BEGIN
the_val := PALINDROME.check_palindrome(343);
END;
/
add a comment |
You've declared a FUNCTION, which RETURNS a value, but you've called it like you would a PROCEDURE, so you need:
DECLARE
the_val INT;
BEGIN
the_val := PALINDROME.check_palindrome(343);
END;
/
You've declared a FUNCTION, which RETURNS a value, but you've called it like you would a PROCEDURE, so you need:
DECLARE
the_val INT;
BEGIN
the_val := PALINDROME.check_palindrome(343);
END;
/
edited Nov 17 '18 at 11:29
answered Nov 17 '18 at 11:16
TenGTenG
2,11821323
2,11821323
add a comment |
add a comment |
Your program doesn't actually return anything and there seems no value in correcting that as you're just displaying the outcome to the screen. Instead you should turn it into a procedure:
create or replace package palindrome as
procedure check_palindrome(num int) ;
end palindrome;
create or replace package body palindrome as
procedure check_palindrome(num int) as
ans int;
z int;
r int;
rev int;
begin
z := num;
while z > 0 loop
r := mod(z,10);
rev := rev*10+r;
z := floor(z/10);
end loop;
if rev=num then
dbms_output.put_line('the no '||num ||' is a palindrome ');
else
dbms_output.put_line('the no '||num ||' is not a palindrome ');
end if;
end check_palindrome;
end palindrome;
Then you can call it successfully:
begin
palindrome.check_palindrome(343);
end;
add a comment |
Your program doesn't actually return anything and there seems no value in correcting that as you're just displaying the outcome to the screen. Instead you should turn it into a procedure:
create or replace package palindrome as
procedure check_palindrome(num int) ;
end palindrome;
create or replace package body palindrome as
procedure check_palindrome(num int) as
ans int;
z int;
r int;
rev int;
begin
z := num;
while z > 0 loop
r := mod(z,10);
rev := rev*10+r;
z := floor(z/10);
end loop;
if rev=num then
dbms_output.put_line('the no '||num ||' is a palindrome ');
else
dbms_output.put_line('the no '||num ||' is not a palindrome ');
end if;
end check_palindrome;
end palindrome;
Then you can call it successfully:
begin
palindrome.check_palindrome(343);
end;
add a comment |
Your program doesn't actually return anything and there seems no value in correcting that as you're just displaying the outcome to the screen. Instead you should turn it into a procedure:
create or replace package palindrome as
procedure check_palindrome(num int) ;
end palindrome;
create or replace package body palindrome as
procedure check_palindrome(num int) as
ans int;
z int;
r int;
rev int;
begin
z := num;
while z > 0 loop
r := mod(z,10);
rev := rev*10+r;
z := floor(z/10);
end loop;
if rev=num then
dbms_output.put_line('the no '||num ||' is a palindrome ');
else
dbms_output.put_line('the no '||num ||' is not a palindrome ');
end if;
end check_palindrome;
end palindrome;
Then you can call it successfully:
begin
palindrome.check_palindrome(343);
end;
Your program doesn't actually return anything and there seems no value in correcting that as you're just displaying the outcome to the screen. Instead you should turn it into a procedure:
create or replace package palindrome as
procedure check_palindrome(num int) ;
end palindrome;
create or replace package body palindrome as
procedure check_palindrome(num int) as
ans int;
z int;
r int;
rev int;
begin
z := num;
while z > 0 loop
r := mod(z,10);
rev := rev*10+r;
z := floor(z/10);
end loop;
if rev=num then
dbms_output.put_line('the no '||num ||' is a palindrome ');
else
dbms_output.put_line('the no '||num ||' is not a palindrome ');
end if;
end check_palindrome;
end palindrome;
Then you can call it successfully:
begin
palindrome.check_palindrome(343);
end;
answered Nov 17 '18 at 13:05
APCAPC
118k15117229
118k15117229
add a comment |
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%2f53350633%2fcannot-call-function-which-is-defined-in-a-pl-sql-package%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