Reputation: 1
CREATE OR REPLACE FUNCTION f_dohvati_post
(
post_id int)
RETURN postovi%ROWTYPE AS redak postovi%ROWTYPE;
BEGIN
SELECT *
INTO redak
from postovi
WHERE id = post_id;
RETURN redak;
END;
I tried executing function with
Exec f_dohvati_post(1);
And i am getting this error ->
Error starting at line : 29 in command -
BEGIN f_dohvati_post(1); END;
Error report -
ORA-06550: line 1, column 7:
PLS-00221: 'F_DOHVATI_POST' is not a procedure or is undefined
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
Upvotes: 0
Views: 162
Reputation: 143088
I don't have your table so I created one:
SQL> create table postovi as select deptno id, dname, loc from dept;
Table created.
SQL> create or replace function f_dohvati_post(post_id int)
2 return postovi%rowtype
3 as
4 redak postovi%rowtype;
5 begin
6 select *
7 into redak
8 from postovi
9 where id = post_id;
10 return redak;
11 end;
12 /
Function created.
It is a function, so you don't "execute" it, but:
SQL> select f_dohvati_post(10) from dual;
select f_dohvati_post(10) from dual
*
ERROR at line 1:
ORA-00902: invalid datatype
SQL>
Whoops! Won't work either! So, what to do? Create your own type:
SQL> create or replace type t_row as object
2 (id number,
3 dname varchar2(10),
4 loc varchar2(10));
5 /
Type created.
SQL> create or replace type t_tab as table of t_row;
2 /
Type created.
SQL> create or replace function f_dohvati_post(post_id int)
2 return t_tab
3 as
4 redak t_tab;
5 begin
6 select t_row(id, dname, loc)
7 bulk collect into redak
8 from postovi
9 where id = post_id;
10 return redak;
11 end;
12 /
Function created.
SQL> select * from table(f_dohvati_post(10));
ID DNAME LOC
---------- ---------- ----------
10 ACCOUNTING NEW YORK
SQL>
Now it works.
Upvotes: 1