如果我有一个执行SELECT的函数,我该如何返回这个结果? select的结果类型是什么?
然后如何使用返回的结果并用它做事(让我们说循环并打印出来)?
答案 0 :(得分:2)
也许你的意思是这样的。
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;
而table_name%ROWTYPE
可以是视图或显式游标名称。
答案 1 :(得分:1)
(我有Oracle 10/11,可能在早期版本中更难?)
msbuild ProjectiOS.csproj /t:_RemoteBuild /p:ServerAddress=IP.ADD.RESS.HERE;BSAT=BSAT
/p:Configuration=Ad-Hoc /p:Platform=iPhone
TABLE
。您必须使用%ROWTYPE
收集它。
e.g。
BULK COLLECT INTO
答案 2 :(得分:-1)
假设您要从表中提取值并对其执行某些操作:
如果您只想查找一个特定记录,可以执行以下操作:
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;