Plsql “a”的类型是什么;选择";?
如果我有一个执行SELECT的函数,我如何返回这个结果?选择结果的类型是什么Plsql “a”的类型是什么;选择";?,plsql,Plsql,如果我有一个执行SELECT的函数,我如何返回这个结果?选择结果的类型是什么 然后我如何使用返回的结果并对其进行处理(比如循环并打印)?假设您希望从表中提取值并对其进行处理: 如果只想查找一条特定记录,可以执行以下操作: DECLARE l_variable1 table_name.column_name%TYPE; l_variable2 table_name.column_name%TYPE; BEGIN SELECT column1, column2 INTO l
然后我如何使用返回的结果并对其进行处理(比如循环并打印)?假设您希望从表中提取值并对其进行处理: 如果只想查找一条特定记录,可以执行以下操作:
DECLARE
l_variable1 table_name.column_name%TYPE;
l_variable2 table_name.column_name%TYPE;
BEGIN
SELECT column1, column2
INTO l_variable1, l_variable2
FROM table_name
WHERE column_name_id = 138;
END;
这仅在返回一行时有效,否则会出现异常,表明查询返回了多行
如果希望多条记录形成一个表/视图,并且需要迭代,请使用游标
DECLARE
CURSOR C_cursor
IS
SELECT column1, column2, columnN
FROM table_name
--other clauses
R_cursor_row C_cursor%ROWTYPE;
BEGIN
OPEN C_cursor;
LOOP
FETCH C_cursor
INTO R_cursor_row;
EXIT WHEN C_cursor%NOTFOUND;
--do what you need for each record
END LOOP;
CLOSE C_cursor;
END;
也许你的意思是这样的
DECLARE
/* Define the REF CURSOR type. */
TYPE curvar_type IS REF CURSOR RETURN table_name%ROWTYPE;
/* Reference it in the parameter list. */
PROCEDURE open_query (curvar_out OUT curvar_type)
IS
local_cur curvar_type;
BEGIN
OPEN local_cur FOR SELECT * FROM table_name;
curvar_out := local_cur;
END;
相反,表\u name%ROWTYPE
可以是视图或显式游标名称 与甲骨文
(我有Oracle 10/11,可能在早期版本中更难?)
它是一个%ROWTYPE
的表
。您必须使用批量收集到中来收集它
e、 g
提示:游标-或-如果只有一个值左右:选择输入我尝试学习游标、引用游标、记录集,但我感到困惑,试图一次只取一个值。试着从一个简单的问题开始:比如,我在函数中做了一个选择,我如何返回结果?我以后如何使用结果(除了循环和使用PUT_行)?接下来,我如何链接几个返回/接收“选择”结果的函数?[我有点思考函数式编程风格:采取集合应用操作,返回,给予其他东西,应用操作,返回,给予其他东西(另一个函数);我这样想是不是错了?]有点模糊,但我最近也有同样的问题,并在Oracle下回答,请阅读,例如,这是一个非常好的资源。我需要返回使用函数的结果。只需将数据保存到一个类型中,然后返回该类型或该类型的表。
declare
TYPE t_ iS TABLE OF MY_TABLE%ROWTYPE;
v_t t_;
begin
select * bulk collect into v_t from MY_TABLE where rownum=1 ;
--- then for printing it --- /!\ depends of the data in your table:
FOR i in 1..v_t.count
loop
dbms_output.put_line(to_char(v_t(i).MY_COLUMN));
end loop;
end;
/